2017-03-09 12 views
0

私はpython hangmanのゲームに取り組んでいて、変数に基づいたグラフィックスを持っているので、1つの人生があるときに、対応する画像が表示されます。私は定義に自分のグラフィックスを置き、それからそれらを呼びたい。ここに私のコードは、これまでのところです:文字列から変数を呼び出す

if life== 1: 
     graphics1() 
if life==2: 
     graphics2() 
if life==3: 
     graphics3() 
if life==4: 
     graphics4() 
if life==5: 
     graphics5() 
if life==6: 
     graphics6() 
if life==7: 
     graphics7() 
if life==8: 
     graphics8() 
if life==9: 
     graphics9() 
if life==10: 
     graphics10() 

というように、ので、私は、1つのまたは2つの行にこれを短縮することを可能にするコマンドはありますか?

+5

'graphics1'と' graphics2'の違いは何ですか? 'life'を引数とする' graphics() '関数を1つ作ることはできませんか? – alfasin

+0

選択された回答を参照してください[ここ](http://stackoverflow.com/questions/5036700/how-can-you-dynamically-create-variables-via-a-while-loop) –

答えて

0

は、私は非常にそれを阻止、それはやってすることによって達成することができる:

globals()["graphics" + str(life)]() 

しかし、ほとんど間違いなく良い解決策があります。各graphics*()の内容がお互いに似ていると仮定します。まあ

0

、枝が

lt = {"1":graphics1(), "2":graphics2()} 

などとして、ルックアップテーブルを経由して表現することができる場合は、複数の。 (およびフォールバック機能を提供)

lt.get(life, graphics1()) 

経由かの枝に ACCESあなたはdictの理解を使用して機能を得るためにGETATTRを使用して動的辞書を作成したい場合。 または、上記のように、 "i番目"のパラメータを渡す関数グラフィックスを一般化します。

関連する問題