Условные конструкции используют условные выражения и в зависимости от их значения направляют выполнение программы по одному из путей. Одна из таких конструкций – это конструкция if. Она имеет следующее формальное определение:
| 1 2 3 4 5 6 | if логическое_выражение:инструкции[elif логическое выражение:инструкции][else: инструкции] |
В самом простом виде после ключевого слова if идет логическое выражение. И если это логическое выражение возвращает True, то выполняется последующий блок инструкций, каждая из которых должна начинаться с новой стоки и должна иметь отступы от начала строки:
| 1 2 3 4 | age = 22if age > 21:print("Доступ разрешен")print("Завершение работы") |
Поскольку в данном случае значение переменной age больше 21, то будет выполняться блок if, а консоль выведет следующие строки:
Доступ разрешен Завершение работы
Отступ желательно делать в 4 пробела или то количество пробелов, которое кратно 4.
Обратите внимание в коде на последнюю стоку, которая выводит сообщение “Завершение работы”. Она не имеет отступов от начала строки, поэтому она не принадлежит к блоку if и будет выполняться в любом случае, даже если выражение в конструкции if возвратит False.
Но если бы мы поставили бы отступы, то она также принадлежала бы к конструкции if:
| 1 2 3 4 | age = 22if age > 21:print("Доступ разрешен")print("Завершение работы") |
Если вдруг нам надо определить альтернативное решение на тот случай, если условное выражение возвратит False, то мы можем использовать блок else:
| 1 2 3 4 5 | age = 18if age > 21:print("Доступ разрешен")else:print("Доступ запрещен") |
Если выражение age > 21 возвращает True, то выполняется блок if, иначе выполняется блок else.
Если необходимо ввести несколько альтернативных условий, то можно использовать дополнительные блоки elif, после которого идет блок инструкций.
| 1 2 3 4 5 6 7 | age = 18if age >= 21:print("Доступ разрешен")elif age >= 18:print("Доступ частично разрешен")else:print("Доступ запрещен") |
Вложенные конструкции if
Конструкция if в свою очередь сама может иметь вложенные конструкции if:
| 1 2 3 4 5 6 7 | age = 18if age >= 18:print("Больше 17")if age > 21:print("Больше 21")else:print("От 18 до 21") |
Стоит учитывать, что вложенные выражения if также должны начинаться с отступов, а инструкции во вложенных конструкциях также должны иметь отступы. Отступы, расставленные не должным образом, могут изменить логику программы. Так, предыдущий пример НЕ аналогичен следующему:
| 1 2 3 4 5 6 7 | age = 18if age >= 18:print("Больше 17")if age > 21:print("Больше 21")else:print("От 18 до 21") |
Теперь напишем небольшую программку, которая использует условные конструкции. Данная программка будет представлять собой своего рода обменный пункт:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Программа Обменный пунктusd = 57euro = 60 money = int(input("Введите сумму, которую вы хотите обменять: "))currency = int(input("Укажите код валюты (доллары - 400, евро - 401): ")) if currency == 400:cash = round(money / usd, 2)print("Валюта: доллары США")elif currency == 401:cash = round(money / euro, 2)print("Валюта: евро")else:cash = 0print("Неизвестная валюта")print("К получению:", cash) |
С помощью функции input() получаем вводимые пользователем данные на консоль. Причем данная функция возвращает данные в виде строки, поэтому нам надо ее еще привести к целому числу с помощью функции int(), чтобы введенные данные можно было использовать в арифметических операциях.
Программа подразумевает, что пользователь вводит количество средств, которые надо обменять, и код валюты, на которую надо произвести обмен. Коды валюты достаточно условны: 400 для долларов и 401 для евро.
С помощью конструкции if проверяем код валюты и делим на соответствующий валютный курс. Так как в процессе деления образуется довольно длинное число с плавающей точкой, которое может содержать множество знаков после запятой, то оно округляется до двух чисел после запятой с помощью функции round().
В завершении на консоль выводится полученное значение. Например, запустим программу и введем какие-нибудь данные:
Введите сумму, которую вы хотите обменять: 20000 Укажите код валюты (доллары - 400, евро - 401): 401 Валюта: евро К получению: 333.33