3.1.1.7 Оператор if-else: больше условного выполнения
Используя эту форму условного оператора, мы можем описать наши планы следующим образом:
if the_weather_is_good:
go_for_a_walk()
else:
go_to_a_theater()
have_lunch()
Если будет хорошая погода, пойдем гулять. Иначе пойдем в театр. Независимо от того, будет ли погода хорошая или плохая, пообедаем после прогулки (после прогулки или после похода в театр).
Все, что мы сказали об отступах, работает точно так же внутри ветки else:
if the_weather_is_good:
go_for_a_walk()
have_fun()
else:
go_to_a_theater()
enjoy_the_movie()
have_lunch()
Вложенные операторы if-else
Теперь давайте обсудим два частных случая условного оператора.
Во-первых, рассмотрим случай, когда инструкция, помещенная после if, является еще одним if.
Прочтите, что мы запланировали на это воскресенье. Если будет хорошая погода, пойдем гулять. Если найдем хороший ресторан, пообедаем там. Иначе съедим бутерброд. Если погода плохая, пойдем в театр. Если билетов нет, поедем за покупками в ближайший ТЦ.
Напишем то же самое на Python. Внимательно рассмотрите код здесь:
if the_weather_is_good: # Если будет хорошая погода, пойдем гулять.
if nice_restaurant_is_found: # Если найдем хороший ресторан, пообедаем там.
have_lunch()
else:
eat_a_sandwich() # Иначе съедим бутерброд.
else:
if tickets_are_available: # Если погода плохая, пойдем в театр.
go_to_the_theater()
else:
go_shopping() # Если билетов нет, поедем за покупками в ближайший ТЦ.
Вот два важных момента:
Во втором частном случае вводится еще одно новое ключевое слово Python: elif. Как вы, наверное, подозреваете, это более короткая форма else if.
elif используется для проверки более чем одного условия и для остановки при обнаружении первого истинного утверждения.
Наш следующий пример напоминает вложение, но сходства очень незначительны. Опять же, мы изменим наши планы и выразим их так: если будет хорошая погода, мы пойдем гулять, иначе, если получим билеты, мы пойдем в театр, иначе, если будут свободные столики в ресторане, пойдем обедать; если ничего не помогает, вернемся домой и сыграем в шахматы.
Вы заметили, сколько раз мы использовали это слово иначе? Это этап, на котором ключевое слово elif играет свою роль.
Напишем тот же сценарий на Python:
if the_weather_is_good: # если будет хорошая погода, мы пойдем гулять
go_for_a_walk()
elif tickets_are_available: # иначе, если получим билеты, мы пойдем в театр
go_to_the_theater()
elif table_is_available: # если будут свободные столики в ресторане, пойдем обедать
go_for_lunch()
else: # если ничего не помогает, вернемся домой и сыграем в шахматы.
play_chess_at_home()
Способ сборки последующих операторов if-elif-else иногда называют каскадом.
Еще раз обратите внимание, как отступ улучшает читаемость кода.
В этом случае следует обратить особое внимание:
if the_weather_is_good:
go_for_a_walk()
else:
go_to_a_theater()
have_lunch()
Если будет хорошая погода, пойдем гулять. Иначе пойдем в театр. Независимо от того, будет ли погода хорошая или плохая, пообедаем после прогулки (после прогулки или после похода в театр).
Все, что мы сказали об отступах, работает точно так же внутри ветки else:
if the_weather_is_good:
go_for_a_walk()
have_fun()
else:
go_to_a_theater()
enjoy_the_movie()
have_lunch()
Вложенные операторы if-else
Теперь давайте обсудим два частных случая условного оператора.
Во-первых, рассмотрим случай, когда инструкция, помещенная после if, является еще одним if.
Прочтите, что мы запланировали на это воскресенье. Если будет хорошая погода, пойдем гулять. Если найдем хороший ресторан, пообедаем там. Иначе съедим бутерброд. Если погода плохая, пойдем в театр. Если билетов нет, поедем за покупками в ближайший ТЦ.
Напишем то же самое на Python. Внимательно рассмотрите код здесь:
if the_weather_is_good: # Если будет хорошая погода, пойдем гулять.
if nice_restaurant_is_found: # Если найдем хороший ресторан, пообедаем там.
have_lunch()
else:
eat_a_sandwich() # Иначе съедим бутерброд.
else:
if tickets_are_available: # Если погода плохая, пойдем в театр.
go_to_the_theater()
else:
go_shopping() # Если билетов нет, поедем за покупками в ближайший ТЦ.
Вот два важных момента:
- такое использование оператора if известно как вложение; помните, что каждый else относится к условию if, которое находится на том же уровне отступа; вам нужно знать это, чтобы определить, как сочетаются if и else
- подумайте, как отступы улучшают читаемость и упрощают понимание и отслеживание кода.
Во втором частном случае вводится еще одно новое ключевое слово Python: elif. Как вы, наверное, подозреваете, это более короткая форма else if.
elif используется для проверки более чем одного условия и для остановки при обнаружении первого истинного утверждения.
Наш следующий пример напоминает вложение, но сходства очень незначительны. Опять же, мы изменим наши планы и выразим их так: если будет хорошая погода, мы пойдем гулять, иначе, если получим билеты, мы пойдем в театр, иначе, если будут свободные столики в ресторане, пойдем обедать; если ничего не помогает, вернемся домой и сыграем в шахматы.
Вы заметили, сколько раз мы использовали это слово иначе? Это этап, на котором ключевое слово elif играет свою роль.
Напишем тот же сценарий на Python:
if the_weather_is_good: # если будет хорошая погода, мы пойдем гулять
go_for_a_walk()
elif tickets_are_available: # иначе, если получим билеты, мы пойдем в театр
go_to_the_theater()
elif table_is_available: # если будут свободные столики в ресторане, пойдем обедать
go_for_lunch()
else: # если ничего не помогает, вернемся домой и сыграем в шахматы.
play_chess_at_home()
Способ сборки последующих операторов if-elif-else иногда называют каскадом.
Еще раз обратите внимание, как отступ улучшает читаемость кода.
В этом случае следует обратить особое внимание:
- вы не должны использовать else без предшествующего if;
- else всегда является последней ветвью каскада, независимо от того, использовали ли вы elif или нет;
- else является необязательной частью каскада и может быть опущена;
- если в каскаде есть ветвь else, выполняется только одна из всех ветвей;
- если нет другой ветви, возможно, что ни одна из доступных веток не будет выполнена.