2017-01-15 8 views
-3

필자는 필자가 실종되었다는 것을 분명히 알았지 만, 누군가이 코드 스 니펫이 무한 루프에서 계속되는 이유를 말해 줄 수 있습니까?목록의 파이썬 무한 루프

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

는'while' 루프 인덱스는 항상 '0'유지 :'전자 [인덱스] ...'당신이 "체크를 업데이트하지 않기 때문에 동안 전자 [0] ...''해야합니다 동안 "(말하자면) 조건의 결과는 항상 동일하게 유지됩니다. –

+0

현재 평가중인 목록의 요소에서 키워드를 찾을 수 없을 때마다 색인이 하나씩 증가합니다. –

+0

'<>'를 사용하지 마십시오. 파이썬 2에서는 더 이상 사용되지 않으며, 파이썬 3 AFAIK에서는 존재하지 않는다고 확신합니다. –

답변

1

어때?
두 개의 for-loops가 무한 루프를 실행하는 것을 방지합니다.

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 요소를 계속 참조합니다. 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

[색인] 좋은 결과를 얻지 못합니다. 나는 IndexError를 얻는다. : 우리의 범위 오류를 나열한다. 각 하위 목록의 0 요소를 확인해야하므로 e [0]가 작동해야한다고 생각합니다. 아니면 적어도 내가하려는 일. 나는이 코드에서 1을 기대하고있다. –

+0

키워드가 항상 e [0] 인 경우 왜 while 루프입니까? 'for e in bucket '은 이미 반복을 수행하여 목록을 반환합니다. – f5r5e5d