在 if 语句中中断 for 循环
Posted
技术标签:
【中文标题】在 if 语句中中断 for 循环【英文标题】:Break for loop in an if statement 【发布时间】:2017-04-25 05:21:53 【问题描述】:目前无法打破这个for
循环。如果在此列表中找不到变量,我想打破它,以便它可以移动另外两个 for
循环。它期望for
循环的顶部有一个缩进块,但是如果我更改break
的位置或for
循环的开始位置,它就不起作用。救命!
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:
【问题讨论】:
break
只跳出内循环,而不跳出外循环。你确定你需要内循环吗?也许应该只是if x in lowercaselist
乍一看,您的缩进似乎不正确。如果 x 在 z 中,第一个 else 是否与第一个相反?然后它应该缩进到与第一个 if 相同的级别。第三个 for 语句是否在 else 之下?然后一切都应该比其他缩进更深一级。
lowercaselist
和uppercaselist
的值是多少?它们是列表列表吗?这就是当您循环遍历它们然后使用x in z
时的样子。
barmar,它们是包含字母表的小写和大写的列表,例如“a”、“b”、
那你为什么要使用x in z
而不是x = z
?或者你为什么不直接写if x in lowercaselist:
?
【参考方案1】:
您需要分别跳出每个循环,正如人们在 cmets 中针对您的问题所提到的那样,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
您需要为两个循环执行此操作
如果您也想跳出 while 循环,那么您也可以在该循环中添加 if x in z: break
。
【讨论】:
是的,这意味着索引对于列表来说太大了,例如,如果您有 4 个元素的list
,并且您尝试获取 list[5]
它会给出错误,因为有没有第五个元素
谢谢,我能够解决索引问题,但是现在,在 if 语句的最后一个 k+=1 之后添加 print newpasswordlist 函数后,它会打印两次 z 的值跨度>
谢谢你,先生,我也会在我的程序中添加我的多个其他 for 循环,希望它会起作用以上是关于在 if 语句中中断 for 循环的主要内容,如果未能解决你的问题,请参考以下文章
举例说明c语言中的中断语句break,continue,return的区别及相同之处