Как еще часть работы в продолжении заявления?
Я не уверен, как continue
заявление интерпретируется, когда оно находится внутри for
петля с else
пункт.
Если условие верно, то break
выйдет из for
петля и else
часть не будет выполнена. И если условие ложно, то else
часть будет выполнена.
Но что насчет continue
заявление? Я проверял, кажется, что после continue
заявление достигнуто, else
часть будет выполнена. Это правда?? Вот пример кода:
# when condition found and it's `true` then `else` part is executing :
edibles = ["ham", "spam", "eggs","nuts"]
for food in edibles:
if food == "spam":
print("No more spam please!")
continue
print("Great, delicious " + food)
else:
print("I am so glad: No spam!")
print("Finally, I finished stuffing myself")`
Если я удаляю "спам" из списка, теперь условие всегда false
и не найден, но все же else
часть выполнена:
edibles = ["ham","eggs","nuts"]
for food in edibles:
if food == "spam":
print("No more spam please!")
continue
print("Great, delicious " + food)
else:
print("I am so glad: No spam!")
print("Finally, I finished stuffing myself")
2 ответа
Ваш else
часть будет выполнена в обоих случаях. else
Часть выполняется, когда цикл завершается, когда условие не найдено. Что происходит в вашем коде. Но это также будет работать без continue
заявление.
Теперь, что касается остальной части оператора break, остальная часть оператора Break будет выполняться, только если:
- Если цикл завершается нормально, без перерыва.
- Если цикл не встречается с перерывом.
С for
цикл в Python, else
блок выполняется, когда цикл заканчивается нормально, то есть нет break
заявление. continue
не влияет на это в любом случае.
Если цикл for заканчивается из-за break
заявление, то else
блок не будет выполняться. Если цикл выходит нормально (нет break
), то else
блок будет выполнен.
Из документов:
При использовании с циклом предложение else имеет больше общего с предложением else оператора try, чем с выражением if: предложение else оператора try выполняется, когда не возникает исключение, а условие else цикла выполняется, когда не происходит прерывания.,
Я всегда помню это из-за того, как Раймонд Хеттингер описывает это. Он сказал, что это должно было быть названо nobreak
вместо else
, (Это также хорошее видео, которое объясняет полезность конструкции for-else)
Пример:
numbers = [1,2,3]
for number in numbers:
if number == 4:
print("4 was found")
break
else:
print("4 was not found")
Когда вы запускаете приведенный выше код, так как 4
отсутствует в списке, цикл не будет break
и else
пункт напечатает. Если вы добавите 4
к списку и запустите его снова, он будет break
и else
не будет печатать. В большинстве других языков вам нужно было бы добавить несколько часовых булевых found
и сделать это True
если вы найдете 4
, тогда выведите оператор только после цикла, если found
является False
,