Урок 3.1 · Программирование с нуля · Модуль 3. Условия · Бесплатно
Цель урока: Понять, как программа сравнивает значения, получает True или False и соединяет проверки словами and, or, not.
Нужно знать заранее: Числа и строки
Зачем это нужно: Представьте, что вы пишете программу для входа на сайт. Если пароль верный — пустить, если нет — сказать «попробуйте ещё раз». Или интернет-магазин: если на карте хватает денег — оплатить, если нет — показать «недостаточно средств». Или игра: если здоровье кончилось — показать «игра окончена». Во всех этих случаях программа сначала задаёт вопрос и получает ответ «да» или «нет», и только потом решает, что делать. Вопрос, на который можно ответить «да» или «нет», в программировании называется сравнением. Сравнение — это не команда, которая что-то делает, а проверка: «5 больше 3?», «пароль равен "python"?», «возраст не меньше 18?». Ответ у сравнения всегда один из двух: True (истина, «да») или False (ложь, «нет»). Без сравнений программа не умеет выбирать: она всегда выполняет одни и те же команды сверху вниз. Сравнения — первый шаг к тому, чтобы код принимал решения. В следующем уроке появится if — команда, которая выполняет блок только тогда, когда сравнение дало True. Поэтому сейчас важно научиться получать True и False и понимать, откуда они берутся.
Как это работает: Шесть знаков сравнения: > — больше: 5 > 3 → True. < — меньше: 5 < 3 → False. >= — больше или равно: 18 >= 18 → True. <= — меньше или равно: 16 <= 18 → True. == — равно: 5 == 5 → True. Это два знака «равно» подряд. != — не равно: 5 != 3 → True. Результат сравнения — обычное значение типа bool (логический тип). Его можно напечатать: print(5 > 3) выведет True. Его можно положить в переменную: is_adult = age >= 18 — и потом использовать. Сравнивать можно числа: 10 > 4. Можно строки: "apple" < "banana" — строки сравниваются по алфавиту, и это работает для латиницы; с кириллицей порядок другой, поэтому на строках лучше сравнивать только на равенство: password == "python". Сравнения можно соединять логическими словами: and — «и»: True and True → True, а если хотя бы одно False, результат False. Пример: age >= 18 and score > 60 — «совершеннолетний и балл больше 60». or — «или»: True or False → True, результат True, если верно хотя бы одно. Пример: age < 18 or score > 60 — «несовершеннолетний или балл больше 60». not — «не»: переворачивает значение. not True → False, not False → True. Пример: not age < 18 — «неправда, что возраст меньше 18», то есть возраст 18 или больше. Порядок: сначала not, потом and, потом or. Если сомневаетесь — ставьте скобки: (age >= 18 and score > 60) or is_vip. Имена переменных берут из английского и пишут латиницей: age — возраст score — балл, счёт password — пароль is_adult — совершеннолетний is_vip — VIP-клиент Имя ничего не считает — оно объясняет человеку, что лежит внутри.
Разбор: age = 18, score = 75. age >= 18 → True: 18 больше или равно 18. score > 90 → False: 75 не больше 90. age == 18 → True: два знака «равно» сравнивают, а не присваивают. age != 18 → False: возраст всё-таки 18, значит «не равно» — ложь. age >= 18 and score > 60 → True and True → True: оба условия верны. age < 18 or score > 60 → False or True → True: хватает одного верного. not age < 18 → not False → True: «неправда, что 18 меньше 18». print(5 = 5) → ошибка: одиночное «равно» внутри выражения не работает, оно только кладёт значение в переменную.
Частая ошибка: Перепутать = и ==. age = 18 кладёт 18 в переменную, age == 18 спрашивает «равно ли 18?». Внутри print(5 = 5) одиночное «равно» — ошибка. Писать True и False с маленькой буквы: true и false — это не значения Python, будет ошибка имени. Писать => вместо >=: в Python «больше или равно» — это >=, а => не существует. Сравнивать строку с числом: "18" == 18 → False, потому что текст и число — разные значения. Сначала превратите текст в число: int("18") == 18 → True. Забыть, что and требует оба условия: True and False → False, а не True.
Итог: Сравнение задаёт вопрос и даёт True или False. Шесть знаков: >, <, >=, <=, ==, !=. Слова and, or, not соединяют проверки: and — нужны оба, or — хватит одного, not — переворачивает. «Равно» — два знака. В следующем уроке из этих True и False вырастет if.
Что дальше: В уроке 3.2 появится if — команда, которая выполняет код только тогда, когда сравнение дало True. Сравнения из этого урока станут её условиями.
age = 18
score = 75
print(age >= 18) # True
print(score > 90) # False
print(age == 18) # True
print(age != 18) # False
print(age >= 18 and score > 60) # True: оба условия верны
print(age < 18 or score > 60) # True: хватает одного
print(not age < 18) # True: «неправда, что 18 меньше 18»Даны три значения: age = 20 score = 55 password = "python" Выведите шесть результатов проверки, каждый с новой строки: 1) возраст 18 или больше; 2) балл больше 60; 3) пароль равен "python"; 4) возраст 18 или больше И балл больше 60; 5) возраст меньше 18 ИЛИ балл больше 50; 6) НЕ (пароль равен "python"). Ожидаемые значения: True, False, True, False, True, False. Имена переменных — английские слова: age — возраст score — балл, счёт password — пароль Можно взять эти имена или свои.
Критерий успеха: Выведены шесть значений в правильном порядке: True, False, True, False, True, False. Видно, что and требует оба условия, or — хотя бы одно, not — переворачивает.