2016-04-25 95 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