2012-01-29 70 views
3

这个Python程序中的else:行是正确/必需的吗?Python程序中的else:是否正确/必要?

from random import randrange 
for n in range(10): 
    r = randrange(0,10) # get random int in [0,10) 
    if n==r: continue # skip iteration if n=r 
    if n>r: break # exit the loop if n>r 
    print n 
else: 
    print "wow, you are lucky!\n" 
if n<9: 
    print "better luck next time\n 
+2

那么,程序甚至不会编译,但只是因为'if n = r:'部分。 – delnan 2012-01-29 21:11:11

+3

@Rik Poggi:这个问题是关于在某个上下文中构造'else:'结构的语法有效性,而不是整个代码片段的代码审查,所以它适合这里,而不是那里。 – BoltClock 2012-01-29 21:22:25

回答

5

documentation

循环可以有一个else子句;当循环通过列表的终止(with)或当条件变为false(while)而循环终止时执行,但当循环由break语句终止时不执行

所以是的,它是正确的你的榜样。虽然我从来没有成为它的粉丝,但是在循环中使用else子句会让代码混淆,我宁愿使用布尔标志来实现相同的效果。恕我直言else应该只用于条件。

3
from random import randrange 
for n in range(10): 
    r = randrange(0,10) 
    if n=r: continue # there should be == 
    if n>r: break 
    print n    # should be "\n" ? 
else: 
    print "wow, you are lucky!\n" # Yes, you are! Your python interpreter can make miracles :). Try to run me.append(SexyChick(10)) and let's see what happens! 

for...else构造实际上是有效的。如果循环未被break终止,则执行else分支。查看here

相关问题