В прошлых статьях мы научились работать с данными: мы присваивали переменные, вычисляли их значения и проводили простые операции. Но реальный мир не такой линейный, как математические выражения. В жизни нужно часто принимать решения, основываясь на том, что ты видишь или что происходит вокруг. Точно так же и в программировании — нам нужно уметь выбирать: что делать, если одно условие выполнено, а что — если другое.

В этой статье мы научимся делать программы, которые принимают решения. Мы разберём условия и ветвления, чтобы вы могли строить логику в своих программах. А именно:

  • что такое if, elif и else;
  • как использовать логические операторы для комбинирования условий;
  • как работать с истиной и ложью значений, чтобы писать более гибкий код.

Сначала: простая проверка

Для начала давайте сделаем простое, но полезное: программу, которая проверяет, можно ли пользователю купить билет на основании его возраста. Если возраст больше или равен 18 — вы даёте разрешение, если меньше — отказываете.

Что нужно сделать?

  1. Попросить пользователя ввести свой возраст.
  2. Проверить, больше ли этот возраст 18 лет.
  3. Напечатать сообщение в зависимости от того, прошло ли условие или нет.

Вот как это выглядит в коде:

age = int(input("Сколько вам лет? "))

if age >= 18:
    print("Вы можете купить билет!")
else:
    print("Извините, вы не можете купить билет.")

Что происходит здесь?

  • Мы используем input(), чтобы получить возраст пользователя.
  • Мы применяем условие с if, проверяя, больше ли или равно введённое значение 18.
  • Если условие выполняется (то есть возраст больше или равен 18), выводим сообщение о разрешении.
  • В противном случае срабатывает else, и выводится сообщение о запрете.

Сейчас программа достаточно проста, но она уже решает конкретную задачу.

Разбираем, как это работает

Теперь давайте разберём, что происходит в каждой строке кода:

age = int(input("Сколько вам лет? "))
  • input() ждёт, пока пользователь введёт текст, и возвращает его в виде строки.
  • Мы используем int(), чтобы преобразовать эту строку в число. Это важно, потому что возраст — это числовое значение, а не текст.
  • В результате переменная age содержит число, которое мы потом будем проверять.

Дальше идёт условие:

if age >= 18:
  • Это проверка: если возраст больше или равен 18, то условие становится истинным, и программа выполнит блок кода под этим if.
  • Важно понимать: после if всегда идёт условие, которое проверяется на истинность или ложность. Если условие истинно (True), выполняется соответствующий блок кода, который идёт с отступом.

Вот блок, который выполнится, если условие истинно:

print("Вы можете купить билет!")

Если условие не выполнится (то есть если возраст меньше 18), сработает следующий блок:

else:
    print("Извините, вы не можете купить билет.")

📢 Подписывайтесь на наш Telegram-канал.

Там вы найдете анонсы обучающих статей и видео, готовый код для ваших проектов и увлекательные курсы. Ничего лишнего — только практика, вдохновение и развитие.

👉 https://t.me/codelab_channel

else — это ветвление для всех оставшихся случаев. Если первое условие не выполнится, выполнится блок, связанный с else.

Усложняем задачу: несколько условий

Теперь давайте усложним задачу. Представьте, что мы не только проверяем возраст, но и проверяем, есть ли у пользователя билет. Добавим ещё одно условие, и сделаем его более сложным.

Что нужно сделать?

  1. Проверить возраст.
  2. Проверить наличие билета.
  3. Если возраст больше или равен 18 и есть билет, разрешить покупку.
  4. Если возраст меньше 18, отказывать в любом случае.
  5. Если возраст больше или равен 18, но нет билета, напечатать сообщение о том, что билет нужно купить.

Вот как это будет выглядеть:

age = int(input("Сколько вам лет? "))
has_ticket = input("У вас есть билет? (да/нет): ").lower() == "да"

if age >= 18 and has_ticket:
    print("Вы можете пройти!")
elif age < 18:
    print("Извините, вы не можете пройти, так как вам меньше 18 лет.")
else:
    print("Для прохода нужен билет!")

Что добавилось?

  • Мы добавили второе условие: есть ли билет. Мы спрашиваем пользователя, есть ли у него билет. Для этого используем input(), а потом с помощью .lower() преобразуем ответ в нижний регистр и проверяем, равно ли это строке "да".
  • В if мы проверяем два условия сразу: возраст больше или равен 18, и билет у пользователя есть. Если оба эти условия выполняются, программа разрешает пройти.
  • В elif мы проверяем, если возраст меньше 18, и выводим сообщение об этом.
  • В блоке else проверяется, если билет есть, но возраст не прошёл, выводится сообщение о необходимости покупки билета.

Логические операторы: and, or, not

Мы использовали логический оператор and, который проверяет два условия: оба должны быть истинными, чтобы условие сработало.

Но если у нас будет ситуация, когда достаточно одного из условий, чтобы условие сработало, мы используем or:

age = int(input("Сколько вам лет? "))
has_ticket = input("У вас есть билет? (да/нет): ").lower() == "да"

if age >= 18 or has_ticket:
    print("Добро пожаловать!")
else:
    print("Пожалуйста, убедитесь, что у вас есть билет и вам 18 или больше.")

Здесь программа пускает пользователя, если ему больше 18 лет или у него есть билет. Если хотя бы одно из этих условий верно, человек может пройти.

Работать с истиной и ложью

В Python всё проще, чем вы думаете. Пустые строки, пустые списки и другие «пустые» объекты воспринимаются как ложь. Всё остальное — это истина.

name = input("Как вас зовут? ")

if name:
    print(f"Привет, {name}!")
else:
    print("Вы не ввели имя.")

Здесь если пользователь не введёт имя, строка будет пустой, и Python воспримет это как ложь, сработает блок else.

Что мы на самом деле изучили?

  • Условные операторы в Python: if, elif и else.
  • Логические операторы: and, or, not.
  • Как Python автоматически трактует истинность и ложность значений.
  • Использование тернарного оператора для коротких условий.

Практика

Теперь, когда основные принципы ясны, давайте потренируемся:

  1. Проверка возраста и стоимости билета: Напишите программу, которая спрашивает возраст и стоимость билета. Если возраст больше 18 лет и стоимость билета меньше 1000, вывести «Вы можете купить билет». Если стоимость больше 1000, вывести «Цена слишком высока для вас».
  2. Скидка на товар: Напишите программу, которая спрашивает цену товара и выводит сумму со скидкой, если цена товара больше 500 (скидка 10%).
  3. Определение числа: Напишите программу, которая спрашивает число и выводит, чётное оно или нечётное, а также больше ли оно 10.

В следующей статье мы перейдём к циклам. Мы научимся повторять действия, чтобы не писать один и тот же код несколько раз.