@Growned_Up

Как использовать оператор else в циклах Python?

Всем привет! Прохожу курс по Python на Stepik. Поясните пример использования оператора else в циклах.

Не понял в чём разница между двумя этими примерами. И там и там цикл завершается не штатным образом, а оператором break.

Привожу фрагмент из урока:
"Напишем, программу, которая определяет, содержит ли введенное пользователем число, цифру 7. Вместо программного кода, написанного ранее:
num = int(input())
n = num
flag = False
while n != 0:
    last = n % 10
    if last == 7:
        flag = True
        break        # прерываем цикл, так как число гарантированно содержит цифру 7
    n //= 10

if flag is True:
    print('Число', num, 'содержит цифру 7')
else:
    print('Число', num, 'не содержит цифру 7')


мы можем использовать:

num = int(input())
n = num
while n != 0:
    last = n % 10
    if last == 7:
        print('Число', num, 'содержит цифру 7')
        break
    n //= 10
else:
    print('Число', num, 'не содержит цифру 7')


" (конец фрагмента из урока)
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 3
JustKappaMan
@JustKappaMan
Frontend, backend, desktop. Всего понемногу.
Всё просто. Блок else цикла while выполняется лишь в том случае, если цикл не был прерван break. Ещё раз внимательно посмотрите на эти 2 примера.
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
В первом случае else принадлежит к if flag is True: к вот этому условию тут все просто думаю комментарии излишне.

Во втором случае else проверяется условие n != 0: Если оно истинно то выполняется то что в теле цикла, ну а если ложно то выполнится else.
Важным нюансом является наличие break в теле цикла. если цикл завершится инструкцией break то else НЕ выполнится. Если же break не случилось а n != 0: перестало быть истинно (или не было изначально истинно) выполнится else.
Ответ написан
Комментировать
@Jack444
Качество курса сразу видно слабое, в жизни такая задача так бы решалась:
result = '7' in input()

С циклами всё просто, while выполняется пока условие True, когда станет False перекинет в блок else. Цикл for сразу проверяет трушность на прерваность и ели цикл не прерван через breakто вернёт False и перекинет в блок else
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы