2016-04-25 101 views
-1

我已經用Python製作了一個小腳本,蠻力給出了單詞,當它找到單詞時,它應該停止。在Python中打破2 for循環

from itertools import product 
rangeone = int(raw_input("Set range1: ")) 
rangetwo = int(raw_input("Set range2: ")) 

question = raw_input("Give password: ") 

alphabets = 'abcdefghijklmnopqrstuvwxyz1234567890' 

for random in range(rangeone, rangetwo): 
    loops = product(alphabets, repeat=random) 
    for y in loops: 
     password = ''.join(y) 
     if password == question: 
      print "done" 
      break 

但是,它並沒有打破循環。它繼續前進

+0

的可能的複製[?如何擺脫在Python多個循環的(http://stackoverflow.com/questions/ 189645 /如何對突破外的多回路型的Python) – d33tah

回答

0

您的代碼有兩個循環,並且break只能打破內部循環。您可以定義一個變量(例如stop)。一旦這個詞被發現,你把它設置爲True,停止外循環:

from itertools import product 
rangeone = int(raw_input("Set range1: ")) 
rangetwo = int(raw_input("Set range2: ")) 

question = raw_input("Give password: ") 

alphabets = 'abcdefghijklmnopqrstuvwxyz1234567890' 

stop = False 
for random in range(rangeone, rangetwo): 
    loops = product(alphabets, repeat=random) 
    for y in loops: 
     password = ''.join(y) 
     if password == question: 
      print "done" 
      stop = True 
      break # breaks the inner loop 
    if stop: break # breaks the outer loop