2017-01-15 1 views
-3

私は紛失していることが非常に明白だと確信していますが、誰かがこのコードスニペットが無限ループで続ける理由を教えてください。リストのPython Infinite Loop

bucket = [['Louis', 29], ['Nick', 2], ['Rochelle', 4]] 

def find_index(bucket,keyword): 
    index = 0 
    for e in bucket: 
     while e[0] <> keyword: 
      index = index + 1 
    return index 


print find_index(bucket,'Nick') 
+3

"(言い換えれば)条件の結果は常に同じままです。 –

+0

現在評価されているリストの要素にキーワードが見つからないたびに、インデックスは1つずつインクリメントされます。 –

+0

'<>'は使わないでください。私はそれがPython 2では廃止され、Python 3 AFAIKではこれまで存在していなかったと確信しています。 –

答えて

1

これはいかがですか?
ループが無限に実行されないようにする2つのfor-loops。 `E [0] ...` `電子ながら、[インデックス] ...`あなたは「チェックを更新しないのでされるべきである: `while`ループのインデックスは常に '0'のまま

bucket = [['Louis', 29], ['Nick', 2], ['Rochelle', 4]] 

def find_index(bucket, keyword): 
    for index, subArray in enumerate(bucket): 
     for element in subArray: 
      if element == keyword: 
       return index 

print find_index(bucket, 'Nick') 
+0

これはうまくいきました。ありがとう!私のコードでは、e [0]はメインリストの各要素のゼロ要素を参照し続けます。ゼロにとどまらない –

+0

はい、whileループに注意してください。条件が満たされるか、何らかの形でループが終了する(ブレーク)ことを常に確認してください。 –

0

どのようにですか?

bucket = [['Louis', 29], ['Nick', 2], ['Rochelle', 4]] 

def find_index(bucket,keyword): 
    index = 0 
    for e in bucket: 
     while e[index] <> keyword: 
      index = index + 1 
    return index 


print find_index(bucket,'Nick') 

あなたはe[0]代わりのe[index]使用しています。

+0

'e [0]'の代わりに 'e [index]'を意味しませんか? –

+0

[index]でも良い結果が得られません。私はIndexError:rangeインデックスの私たちのインデックスを取得します。私は各サブリストのゼロ要素をチェックするように要求しているので、e [0]はうまくいくと思います。それとも少なくとも私がやろうとしていること。私はこのコードから1を期待しています。 –

+0

キーワードが常にe [0]の場合、なぜwhileループですか? 'for e in bucket'はすでに反復を行い、リストを返します – f5r5e5d