我理解这个结构是如何工作的:
for i in range(10):
print(i)
if i == 9:
print("Too big - I'm giving up!")
break;
else:
print("Completed successfully")
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么else在这里用作关键字,因为它表明有问题的代码仅在for块未完成时运行,这与它的作用相反!无论我如何看待它,我的大脑都无法从for语句无缝地进展到else块.对我来说,continue或者continuewith更有意义(我正在努力训练自己阅读它).
我想知道Python编码器如何在他们的脑海中读取这个结构(或者如果你愿意的话,大声朗读).也许我错过了一些会让这些代码块更容易破译的东西?
我注意到以下代码在Python中是合法的.我的问题是为什么?有具体原因吗?
n = 5
while n != 0:
print n
n -= 1
else:
print "what the..."
Run Code Online (Sandbox Code Playgroud) 是否可以使用该break函数退出几个嵌套for循环?如果是这样,你会怎么做呢?你还可以控制休息退出的循环次数吗?
可能重复:
如何在Python中打破多个循环?
是否有一种更容易的方法来打破嵌套循环而不是抛出异常?(在Perl中,您可以为每个循环指定标签,并至少继续外循环.)
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
"break both loops"
Run Code Online (Sandbox Code Playgroud)
也就是说,有一个更好的方式:
class BreakIt(Exception): pass
try:
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
raise BreakIt
except BreakIt:
pass
Run Code Online (Sandbox Code Playgroud) 你怎么能continue在Python中说两个嵌套循环的父循环?
for a in b:
for c in d:
for e in f:
if somecondition:
<continue the for a in b loop?>
Run Code Online (Sandbox Code Playgroud)
我知道你可以在大多数情况下避免这种情况但可以在Python中完成吗?
我使用以下方法来破坏Python中的双循环.
for word1 in buf1:
find = False
for word2 in buf2:
...
if res == res1:
print "BINGO " + word1 + ":" + word2
find = True
if find:
break
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来打破双循环?
我正在使用多个嵌套for循环.在最后一个循环中有一个if声明.当评估True所有for循环应该停止,但这不会发生.它只break离开最里面的for循环,而不是继续前进.如果break遇到语句,我需要所有循环停止.
我的代码:
for i in range(1, 1001):
for i2 in range(i, 1001):
for i3 in range(i2, 1001):
if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
print i*i2*i3
break
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在Python中打破多个循环?
是否有可能在Python中打破两个for循环?
即
for i in range(1,100):
for j in range(1,100):
break ALL the loops!
Run Code Online (Sandbox Code Playgroud) 目前在打破这个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:
Run Code Online (Sandbox Code Playgroud) 以下python代码将导致打印n(14),因为for循环已完成.
for n in range(15):
if n == 100:
break
else:
print(n)
Run Code Online (Sandbox Code Playgroud)
但是,我想要的是与此相反.有没有办法做一个... else(或while ... else)循环,但只有在循环确实中断时才执行else代码?
python ×9
for-loop ×6
if-statement ×4
break ×3
loops ×3
nested-loops ×2
c++ ×1
for-else ×1
list ×1
python-2.7 ×1
python-3.x ×1
syntax ×1
while-loop ×1