2012-01-29 22 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

相關問題