Python: Логический тип
Кроме арифметических операций в математике есть операции сравнения, например, 5 > 4
или 3 < 1
. Они есть и в программировании. Сравнения часто применяются в реальных задачах, связанных с числами. Например, когда мы оформляем покупку в интернет-магазине, система проверяет: хватает ли у пользователя денег на счёте, чтобы оплатить товар. Если сумма на счёте больше или равна цене товара, заказ подтверждается. Если меньше — появляется сообщение, что средств недостаточно.
Сравнение в программировании
Начнем с примера в котором сравнивается два числа:
print(5 > 4) # => True
print(4 > 4) # => False
Результатом сравнения является значение типа bool
. У это типа есть всего два возможных варианта True
и False
. Причем обратите внимание, это не строки. Их можно использовать напрямую:
print(True)
print(False)
На практике, их редко так используют, но на их основе строится логика поведения программы. Мы с этим сталкиваемся буквально каждый день когда вводим пинкоды и пароли, когда выполняем какие-то действия, результатом которых могут быть разные варианты. Все эти варианты прописаны внутри программы в виде условных выражений: если так то делай раз, если по-другому, то делай два.
Список операций сравнения:
<
— меньше<=
— меньше или равно>
— больше>=
— больше или равно==
— равно!=
— не равно
Языки программирования адаптировали все математические операции сравнения в неизменном виде, кроме операторов равенства и неравенства. В математике для этого используется обычное равно =
, но в программировании символ =
, чаще всего, используется, чтобы присвоить переменным значения. Поэтому в Python сравнивают с помощью ==
. Несколько примеров:
print(5 >= 3) # => True
print(7 < 0) # => False
print(5 > 5) # => False
print(5 >= 5) # => True
print(2 == 5) # => True
print(2 != 5) # => True
Когда в сравнении используют конкретные значения, то эта операция кажется бесмысленной, мы и так знаем ее результат сравнения и он всегда один и тот же, потому что если 3 больше 2, то это не меняется. Но все меняется, когда значения могут меняться. Попробуем написать простую функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до двух лет (два не включается):
def is_infant(age: int) -> bool:
return age < 2
print(is_infant(3)) # => False
print(is_infant(2)) # => False
print(is_infant(1)) # => True
print(is_infant(0)) # => True
Когда функции возвращают результат сравнения, они обычно отвечают на вопрос «да» или «нет». Такие функции называют предикатами. Их легко узнать по тому, что они возвращают логическое значение True
или False
. Часто в их названии есть вопрос или утверждение, которое можно проверить (is', 'has
, can
). Вот функция, проверяющая, является ли число чётным:
def is_negative(number: int) -> bool:
# Проверяем остаток от деления
return number < 0
print(is_negative(-5)) # => True
print(is_negative(7)) # => False
Задание
Напишите функцию is_pensioner()
, которая принимает возраст в качестве единственного аргумента и проверяет, является ли этот возраст пенсионным. Пенсионным считается возраст 60 лет и больше.
Примеры вызова:
is_pensioner(75) # True
is_pensioner(18) # False
Полезное
Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Ваше упражнение проверяется по этим тестам
import index
def test1():
assert not index.is_pensioner(23)
assert index.is_pensioner(70)
assert index.is_pensioner(60)
assert not index.is_pensioner(59)
Решение учителя откроется через:
20:00
