На этом шаге мы рассмотрим назначение и особенности использования этого оператора.
Оператор ветвления if...else позволяет в зависимости от значения логического выражения выполнить отдельный участок программы или, наоборот, не выполнить его. Оператор имеет следующий формат:
if <Логическое выражение>: <Блок, выполняемый, если условие истинно> [elif <Логическое выражение>: <Блок, выполняемый, если условие истинно> ] [else: <Блок, выполняемый, если все условия ложны> ]
Как вы уже знаете, блоки внутри составной инструкции выделяются одинаковым количеством пробелов (обычно четырьмя пробелами). Концом блока является инструкция, перед которой расположено меньшее количество пробелов. В некоторых языках программирования логическое выражение заключается в круглые скобки. В языке Python это делать необязательно, но можно, т. к. любое выражение может быть расположено внутри круглых скобок. Тем не менее, круглые скобки следует использовать только при необходимости разместить условие на нескольких строках.
Для примера напишем программу, которая проверяет, является введенное пользователем число четным или нет.
# -*- coding: utf-8 -*- x = int(input("Введите число: ")) if x % 2 == 0: print(x, " - четное число") else: print(x, " - нечетное число") input()
После проверки выводится соответствующее сообщение (рисунок 1):
Рис.1. Результат работы скрипта
Если блок состоит из одной инструкции, то эту инструкцию можно разместить на одной строке с заголовком:
# -*- coding: utf-8 -*- x = int(input("Введите число: ")) if x % 2 == 0: print(x, " - четное число") else: print(x, " - нечетное число") input()
В этом случае концом блока является конец строки. Это означает, что можно разместить сразу несколько инструкций на одной строке, разделяя их точкой с запятой:
# -*- coding: utf-8 -*- x = int(input("Введите число: ")) if x % 2 == 0: print(x, end=" "); print(" - четное число") else: print(x, end=" "); print(" - нечетное число") input()
Согласитесь, что следующий код читается намного проще, чем предыдущий:
# -*- coding: utf-8 -*- x = int(input("Введите число: ")) if x % 2 == 0: print(x, end=" ") print(" - четное число") else: print(x, end=" ") print(" - нечетное число") input ()
Оператор if...else позволяет проверить сразу несколько условий. Рассмотрим это на следующем примере:
# -*- coding: utf-8 -*- print("""Какой операционной системой вы пользуетесь? 1 - Windows 8 2 - Windows 7 3 - Windows Vista 4 - Windows XP 5 - Другая""") os = input("Введите число, соответствующее ответу: ") if os == "1": print("Вы выбрали: Windows 8") elif os == "2": print("Вы выбрали: Windows 7") elif os == "3": print("Вы выбрали: Windows Vista") elif os == "4": print("Вы выбрали: Windows XP") elif os == "5": print("Вы выбрали: другая") elif not os: print("Вы не ввели число") else: print("Мы не смогли определить вашу операционную систему") input()
С помощью инструкции elif мы можем определить выбранное значение и вывести соответствующее сообщение. Обратите внимание на то, что логическое выражение не содержит операторов сравнения:
elif not os: .
Такая запись эквивалентна следующей:
elif os == "":
Проверка на равенство выражения значению True выполняется по умолчанию. Поскольку пустая строка интерпретируется как False, мы инвертируем возвращаемое значение с помощью оператора not.
Один условный оператор можно вложить в другой. В этом случае отступ вложенной инструкции должен быть в два раза больше:
# -*- coding: utf-8 -*- print("""Какой операционной системой вы пользуетесь? 1 - Windows 8 2 - Windows 7 3 - Windows Vista 4 - Windows XP 5 - Другая""") os = input("Введите число, соответствующее ответу: ") if os != "": if os == "1": print("Вы выбрали: Windows 8") elif os == "2": print("Вы выбрали: Windows 7") elif os == "3": print("Вы выбрали: Windows Vista") elif os == "4": print("Вы выбрали: Windows XP") elif os == "5": print("Вы выбрали: другая") else: print("Мы не смогли определить вашу операционную систему") else: print("Вы не ввели число") input()
Оператор if...else имеет еще один формат:
<Переменная> = <Если истина> if <Условие> else <Если ложь>
Пример:
>>> print("Yes" if 10 % 2 == 0 else "No") Yes >>> s = "Yes" if 10 % 2 == 0 else "No" >>> s 'Yes' >>> s = "Yes" if 11 % 2 == 0 else "No" >>> s 'No'
На следующем шаге мы рассмотрим цикл for.