Является ли `else:` правильным / необходимым в этой программе Python? - PullRequest
3 голосов
/ 30 января 2012

Является ли строка else: правильной / необходимой в этой программе Python?

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 ]

6 голосов
/ 30 января 2012

Из документации :

Операторы цикла могут содержать предложение else; он выполняется, когда цикл завершается из-за исчерпания списка (с помощью for) или когда условие становится ложным (с помощью while), но не тогда, когда цикл завершается с помощью оператора break

Так что да, это правильно в вашем примере. Хотя я никогда не был его поклонником, использование условия else в цикле поначалу сбивает с толку код, но я бы предпочел использовать логический флаг для достижения того же эффекта. ИМХО else следует использовать только для условных выражений.

3 голосов
/ 30 января 2012
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. Смотрите здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...