2016-08-15 14 views
0

同様の変数名を異なる値でループしようとしていますが、実行できません。私は以下のコードを添付しました。あなたは、バージョン1のコードの効果を得るために何をするべきかについて私に助言してもらえますか?どうもありがとう。Python 3.5:ループで変数名を変更して変数値を代入する

#Version 1: The intended effect 
def test(): 

    global v1, v2, v3 

    v1 = 1 
    v2 = 2 
    v3 = 3 

    print (v1) 
    print (v2) 
    print (v3) 

if __name__ == "__main__": 
    test() 

そして:

#Version 2: The loop I tried but failed 
def test(): 

    global v1, v2, v3 

    for i in range (1,3): 
     "v" + str(i) = i 
     print ("v" + str(i)) 

if __name__ == "__main__": 
    test() 
+0

'str'に名前(変数)を割り当てようとしていません。それは正しくありません。あなたが '' v1 = 1'を実行したとしたらどうでしょう? –

+1

あなたはリストを使うことができない理由はありますか? –

+1

辞書を使用します。グローバル変数は使用しないでください。 –

答えて

2
# Version 3: What you should be doing 

def test(): 
    v = [] 
    for i in range(1, 3): 
     v.append(i) 
     print(v[i-1]) 

if __name__ == '__main__': 
    test() 

グローバルスコープ彼らは最終的に困難なデバッグ破損の原因になりますので、「変数変数」、および他のソリューションのすべての種類は、(余分と一般的に醜いですより大きなアプリでは)これのために。このタイプのものにはlistを使用してください。

# Version 4: Bonus list comprehension version 

def test(): 
    return [i for i in range(1, 3)] # or list(range(1, 3)) 
+0

こんにちは、すべての、迅速な返信をいただきありがとうございます。しかし私が探しているのは、同様のグローバル変数を通るループです。主な点は "v" + str(i)の部分を行うことです。印刷は結果を示すためのものです。現在、私は30以上のグローバル変数を1つのシリーズで開発するコードを書いており、すべての変数は同様のアルゴリズムを持つtkinterウィジェットに割り当てられるため、同様のコードを常に繰り返す代わりにループする方法を探します。これについてのアイデア?再度、感謝します。 –

+0

なぜグローバル変数を使用していますか?グローバルスコープはほとんど必要ありません。 (私が今まで必要だった私のプロのキャリアでは、いつでも考えることができません)また、これらをループしたい場合、それらはすべて関連しています( 'v1'、 v2'、...、 'vN')、**それはリストでなければならない** ** –

関連する問題