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

时间:2012-01-29 21:07:26

标签: python if-statement

此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 个答案:

答案 0 :(得分:6)

来自documentation

  

循环语句可能有一个else子句;当循环通过列表耗尽(使用for)或条件变为false(使用while)终止时执行它,但是当循环被break语句终止时不执行

所以是的,在你的例子中它是正确的。虽然我从来都不喜欢它,但是在循环上使用else子句会使代码混乱,我宁愿使用布尔标志来实现相同的效果。恕我直言else应仅用于条件。

答案 1 :(得分: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构造实际上是有效的。如果循环尚未被else终止,则执行break分支。看here