Логические операторы: or
Второй логический оператор — or. «Если сегодня суббота или воскресенье, то выходной»:
day = "воскресенье"
if day == "суббота" or day == "воскресенье":
print("Сегодня выходной")Программа выведет:
Сегодня выходнойУсловие, соединённое с помощью or, истинно, если истинна хотя бы одна из его частей. Оно ложно, только если ложны все части:
True or True— этоTrueTrue or False— этоTrueFalse or True— этоTrueFalse or False— этоFalse
Типичная ошибка — сократить условие так, как мы говорим: day == "суббота" or "воскресенье". Python берёт правую часть сама по себе: это просто текст "воскресенье", а не сравнение. Непустой текст считается истинным, поэтому всё условие всегда истинно, даже в понедельник. Каждой части нужно своё сравнение: day == "суббота" or day == "воскресенье".
Можно использовать and и or в одном условии. Как умножение выполняется раньше сложения, так and выполняется раньше or. Группируйте скобками то, что должно идти вместе, как в математике:
day = "суббота"
temperature = 15
if (day == "суббота" or day == "воскресенье") and temperature > 20:
print("Поедем за город")
else:
print("Останемся дома")Программа выведет:
Останемся домаЧасть в скобках вычисляется первой: сегодня суббота, значит, она истинна. Но temperature > 20 ложно, а True and False — ложь. Без скобок Python сначала соединил бы day == "воскресенье" and temperature > 20, и условие было бы истинным в любую субботу, какая бы ни была погода.
Задание
- 1
Кинотеатр даёт скидку студентам и людям от 65 лет. Напишите инструкцию
if, которая выводитСкидка, еслиis_studentистинно илиageне меньше65. Используйтеor. - 2
Новое правило: скидки только по средам. Добавьте
and day == "среда"в конец условия, поставьте скобки вокруг части сorи добавьте ветвьelse, которая выводитПолная цена. Сегодня понедельник, поэтому программа выведетПолная цена.