在 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 之下?然后一切都应该比其他缩进更深一级。 lowercaselistuppercaselist 的值是多少?它们是列表列表吗?这就是当您循环遍历它们然后使用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 循环的主要内容,如果未能解决你的问题,请参考以下文章

Java Review (流程控制)

MATLAB for循环内if语句判断失败

举例说明c语言中的中断语句break,continue,return的区别及相同之处

如何用Python for循环语句,if语句 计算1-2+3-4+5......-99

在VB中 for 循环嵌套语句的用法语解释(必须清楚!!)

Javascript-JS问题:continue语句