2017-03-12 9 views
-2

私はforループの単純なカウンタをインクリメントしようとしていますが、この関数は常に54を返します。これは、2番目のカウンタがforループ内のローカル変数として認識されるためです。どうすればカウンターを増やすことができますか?私は、これは本当にシンプルなので、Pythonはおそらくまっすぐな言語であるはずだと思う。どんな助けでも大歓迎です!Pythonのforループでカウンタをインクリメントする方法はありますか?

for line in train_instances: 
    counter = 54 
    a = (line.split(":")[0])[i] 
    b = (line.split(":")[1])[1] 
    if ((int(a) == X) and (int(b) == Y)): 
     counter = counter + 1 
return counter 
+7

これを_each_繰り返しで 'counter = 54'に割り当てるためですか? – myaut

答えて

2

代わりにemumerateを使用してください。

for counter,line in enumerate(train_instances): 
    a,b = line.split(":") 

は、ループ内で何かをインクリメントまたはあなたがのためにループの外カウンタの初期宣言を動かすために必要なすべての

2

counterをリセットしないでください。それが内部にあるので、ループするたびに、カウンタは毎回54にリセットされます。

1

ループの前にcounterを初期化する必要があります。現在のコードでは、ループごとにcounterを54に設定しています。

2

カウンタ変数がループの本体にあり、ループが実行されるたびにカウンタ変数が再宣言され、値54が割り当てられます。 forループは以下のコードのように正しい値を返します。

counter = 54 

for line in train_instances: 
    a = (line.split(":")[0])[i] 
    b = (line.split(":")[1])[1] 

    if ((int(a) == X) and (int(b) == Y)): 
     counter = counter + 1 
return counter 
関連する問題