В каждой команде if центральное место занимает выражение, результатом которого является логическая истина (True) или логическая ложь (False); это выражение называется условием. В зависимости от результата проверки Python решает, должен ли выполняться код в команде if. Если результат условия равен True, то Python выполняет код, следующий за командой if.
Во многих условиях текущее значение переменной сравнивается с конкретным значением, интересующим вас. Простейшее условие проверяет, равно ли значение переменной конкретной величине:
(1) >>> car = 'bmw'
(2)>>> car == 'bmw'
True
В строке (1) переменной car присваивается значение 'bmw'; операция выполняется одним знаком =, как вы уже неоднократно видели. Строка (2) проверяет, равно ли значение car строке 'bmw'; для проверки используется двойной знак равенства (==). Этот оператор возвращает True, если значения слева и справа от оператора равны; если же значения не совпадают, оператор возвращает False. В нашем примере значения совпадают, поэтому Python возвращает True.
Если car принимает любое другое значение вместо 'bmw', проверка возвращает False:
(1) >>> car = 'audi'
(2)>>> car == 'bmw'
False
Одиночный знак равенства выполняет операцию; код (1) можно прочитать в форме «Присвоить car значение 'audi'». С другой стороны, двойной знак равенства, как в строке (2), задает вопрос: «Значение car равно 'bmw'?» Такое применение знаков равенства встречается во многих языках программирования.
В языке Python проверка равенства выполняется с учетом регистра. Например, два значения с разным регистром символов равными не считаются:
>>> car = 'Audi'
>>> car == 'audi'
False
Если регистр символов важен, такое поведение приносит пользу. Но если проверка должна выполняться на уровне символов без учета регистра, преобразуйте значение переменной к нижнему регистру перед выполнением сравнения:
>>> car = 'Audi'
>>> car.lower() == 'audi'
True
Условие возвращает True независимо от регистра символов 'Audi', потому что проверка теперь выполняется без учета регистра. Функция lower() не изменяет значения, которое изначально хранилось в car, так что сравнение не отражается на исходной переменной:
(1) >>> car = 'Audi'
(2)>>> car.lower() == 'audi'
True
(3)>>> car
'Audi'
В точке (1) строка 'Audi' сохраняется в переменной car. В точке (2) значение car приводится к нижнему регистру и сравнивается со значением строки 'audi', также записанным в нижнем регистре. Две строки совпадают, поэтому Python возвращает True. Вывод в точке (3) показывает, что значение, хранящееся в car, не изменилось в результате проверки.
Веб-сайты устанавливают определенные правила для данных, вводимых пользователями подобным образом. Например, сайт может использовать проверку условия, чтобы убедиться в том, что имя каждого пользователя уникально (а не совпадает с именем другого пользователя, отличаясь от него только регистром символов). Когда кто-то указывает новое имя пользователя, это имя преобразуется к нижнему регистру и сравнивается с версиями всех существующих имен в нижнем регистре. Во время такой проверки имя 'John' будет отклонено, если в системе уже используется любая разновидность 'john'.
Если вы хотите проверить, что два значения различны, используйте комбинацию из восклицательного знака и знака равенства (!=). Восклицательный знак представляет отрицание, как и во многих языках программирования.
Для знакомства с оператором неравенства мы воспользуемся другой командой if. В переменной хранится заказанное дополнение к пицце; если клиент не заказал анчоусы (anchovies), программа выводит сообщение:
toppings.py
requested_topping = 'mushrooms'
(1) if requested_topping != 'anchovies':
. .print("Hold the anchovies!")
Строка (1) сравнивает значение requested_topping со значением 'anchovies'. Если эти два значения не равны, Python возвращает True и выполняет код после команды if. Если два значения равны, Python возвращает False и не выполняет код после команды if. Так как значение requested_topping отлично от 'anchovies', команда print будет выполнена:
Hold the anchovies!
В большинстве условных выражений, которые вы будете использовать в программах, будет проверяться равенство, но иногда проверка неравенства оказывается более эффективной.
Проверка числовых значений достаточно прямолинейна. Например, следующий код проверяет, что переменная age равна 18:
>>> age = 18
>>> age == 18
True
Также можно проверить условие неравенства двух чисел. Например, следующий код выводит сообщение, если значение переменной answer отлично от ожидаемого:
magic_ number.py
answer = 17
(1) if answer != 42:
. .print("That is not the correct answer. Please try again!")