2016-12-09 118 views
3

目前无法打破此循环。如果在这个列表中找不到变量,我想分解它,所以它可以移动另一个循环。它期望for循环的顶部有一个缩进块,但是如果我改变break或者for循环的开始位置,它不起作用。帮帮我!在if语句中打破循环

while cyclenumb <= 10000: 

    for x in userpassword[k]: 
     for z in lowercaselist: 
      if x in z: 
       newpasswordlist.append(z) 
       k +=1 
       break 
     else: 

    for x in userpassword[k]: 
     for z in uppercaselist: 
      if x in z: 
       newpasswordlist.append(z) 
       k +=1 
       break 
     else: 
+1

'break'只打破了内部循环,而不是外部循环。你确定你需要内部循环吗?也许它应该是'如果x在小写字母表中' – Barmar

+1

乍一看,缩进看起来不正确。如果x在z中,第一个是否与第一个相反?然后它应该缩进到与第一个相同的级别。第三个陈述是否在其他情况下?然后,所有东西都应该比其他东西缩进一层。 – rajah9

+0

'lowercaselist'和'uppercaselist'的价值是什么?他们是名单的清单吗?这看起来像是当你循环它们,然后使用'x in z'。 – Barmar

回答

4

你需要单独查看每个循环的,随着人们对你的问题的评论都提到,break只是停止其在

for x in userpassword[k]: 
    for z in lowercaselist: 
     if x in z: 
      newpasswordlist.append(z) 
      k +=1 
      break 

    if x in z: # added an extra condition to exit the main loop 
     break 

你需要循环如果你想打出来的,而循环,以及为循环

这样做,那么你可以在循环aswel添加if x in z: break

+0

是的,这意味着索引对于列表来说太大了,例如,如果你有一个包含4个元素的list,并且你试图得到list [5],它会给出一个错误,因为有没有第五个元素 –

+0

谢谢,我能够解决索引问题,但现在,我在if语句的最后一个k + = 1之后添加了print newpasswordlist函数后,它将两次打印z的值 – mansa

+0

谢谢sir,i会在我的程序中加入我的多个for循环,希望它能起作用 – mansa