Вложенные условия
Блок кода может содержать любой код, даже другую инструкцию if. if внутри блока другого if называют вложенным условием. Оно полезно, когда один вопрос имеет смысл, только после другого. В кино, например, мы сначала проверяем, есть ли у посетителя билет, и только потом — сколько ему лет:
has_ticket = True
age = 15
if has_ticket:
if age >= 18:
print("Приятного просмотра")
else:
print("Извините, этот фильм только для взрослых")
else:
print("Сначала купите билет")Программа выведет:
Извините, этот фильм только для взрослыхВнутренняя инструкция if выполняется, только когда has_ticket истинно. Её блоки записаны с ещё 4 пробелами отступа, то есть всего 8, и каждый else имеет такой же отступ, как if, к которому он относится. Так Python понимает, что первый else относится к if age >= 18, а второй — к if has_ticket.
Вложенные условия часто можно переписать с помощью and и elif. Этот код делает то же самое:
has_ticket = True
age = 15
if has_ticket and age >= 18:
print("Приятного просмотра")
elif has_ticket:
print("Извините, этот фильм только для взрослых")
else:
print("Сначала купите билет")Программа выведет:
Извините, этот фильм только для взрослыхПрограмма доходит до elif has_ticket, только когда первое условие ложно. При наличии билета это значит, что посетителю нет 18. Ни один способ не является неправильным: выберите тот, который проще читать. Когда ни у одного if нет else, обычно лучше читается один if с and: вместо if has_ticket: с if age >= 18: внутри напишите if has_ticket and age >= 18:. Он делает то же самое, с одним уровнем отступа меньше.
Задание
- 1
Студент сдаёт экзамен при 50 баллах и больше, а при 75 и больше сдаёт с отличием. В блоке
if points >= 50:напишите вложенную инструкциюifс условиемpoints >= 75, которая выводитСдано с отличием, и добавьте к ней ветвьelse, которая выводитСдано. Можно использовать строкуprint("Сдано"): перенесите её во внутреннийelseи сделайте ещё 4 пробела отступа. - 2
Измените
pointsна82и запустите программу. Она должна вывестиСдано с отличием.