Инструкция if
До сих пор ваши программы выполняли каждую строку, одну за другой, сверху вниз. Но программе часто нужно решать, что делать: показывать предупреждение, только если пароль слишком короткий, или давать скидку, только если покупатель — студент. Мы постоянно принимаем такие решения: если пойдёт дождь, я возьму зонт.
В Python решение записывают с помощью инструкции if:
temperature = 30
if temperature > 25:
print("Жарко, наденьте кепку")
print("Хорошего дня")Программа выведет:
Жарко, наденьте кепку
Хорошего дняИнструкция if состоит из четырёх частей:
- ключевое слово
if. Ключевое слово — это слово с особым значением в Python; - условие:
temperature > 25. Условие — это вопрос, на который можно ответить только «да» (истина) или «нет» (ложь): температура больше 25? - двоеточие
:в конце строки; - блок кода: строки с отступом под строкой с
if. Блок выполняется, только если условие истинно.
Строки блока записывают с отступом: они начинаются с 4 пробелов. В Python отступ нужен не для красоты: по нему Python понимает, какие строки относятся к блоку. Считать пробелы не нужно. Когда вы ставите двоеточие и нажимаете Enter, редактор сам делает отступ в следующей строке, и клавиша Tab тоже добавляет 4 пробела. Когда блок закончится, уберите отступ в следующей строке клавишей Backspace.
После блока программа продолжает работу как обычно, поэтому Хорошего дня выводится в любом случае. Если бы temperature было равно 10, условие было бы ложным: программа пропустила бы блок и вывела только Хорошего дня.
Блок не может быть пустым. Если забыть сделать отступ в строке под if, программа ничего не выведет и закончится ошибкой:
temperature = 30
if temperature > 25:
print("Жарко, наденьте кепку")Traceback (most recent call last):
File "<exec>", line 3
print("Жарко, наденьте кепку")
^^^^^
IndentationError: expected an indented block after 'if' statement on line 2Читайте с последней строки: Python ожидал блок с отступом после инструкции if в строке 2, но строка 3 без отступа. Другая типичная ошибка — пропущенное двоеточие: if temperature > 25 без него заканчивается ошибкой SyntaxError: expected ':'.
Задание
- 1
Под переменной напишите инструкцию
ifс условиемmonitor_price < 4000. В её блоке выведитеЯ куплю монитор. - 2
Под блоком, без отступа, напишите вторую инструкцию
ifс условиемmonitor_price > 4000, которая выводитСлишком дорого. Запустите программу: она по-прежнему выводит толькоЯ куплю монитор, потому что 3000 не больше 4000, и второй блок пропускается.