Перейти к содержанию

Урок 003: условия и бизнес-правила

Цель

Записать правила допустимых значений и выбирать поведение программы с помощью if, elif и else.

Логические выражения

Сравнение возвращает True или False:

quantity = 5

print(quantity > 0)
print(quantity == 0)
print(quantity < 0)

Не путайте = и ==: первое присваивает значение, второе сравнивает два значения.

Оператор Смысл
== равно
!= не равно
<, <= меньше, меньше или равно
>, >= больше, больше или равно
and оба условия истинны
or истинно хотя бы одно
not логическое отрицание

Ветвление

quantity = int(input("Количество: "))

if quantity < 0:
    print("Ошибка: количество не может быть отрицательным")
elif quantity == 0:
    print("Предупреждение: итоговая сумма будет нулевой")
else:
    print("Количество принято")

Python выполняет только первую подходящую ветку. Отступы являются частью синтаксиса; используйте четыре пробела внутри блока.

Проверка диапазона

Скидка допускается от 0 до 100 процентов включительно:

discount_percent = float(input("Скидка, %: "))

if 0 <= discount_percent <= 100:
    print("Скидка принята")
else:
    print("Ошибка: скидка должна быть от 0 до 100")

Это бизнес-правило, а не свойство Python. В другом продукте максимальная скидка может быть 30%, поэтому правило должно быть явно записано в требованиях и тестах.

Несколько правил

product_name = input("Название: ").strip()
unit_price = float(input("Цена: "))
quantity = int(input("Количество: "))

if product_name == "":
    print("Ошибка: введите название")
elif unit_price < 0:
    print("Ошибка: цена не может быть отрицательной")
elif quantity < 0:
    print("Ошибка: количество не может быть отрицательным")
else:
    subtotal = unit_price * quantity
    print(f"Сумма: {subtotal:.2f} руб.")

Такой код проверяет первое найденное нарушение. Позже вы научитесь собирать несколько ошибок одновременно; сейчас важнее понятный порядок правил.

Типичные ошибки

  • Использовать несколько независимых if, когда должна выполниться одна ветка.
  • Сравнивать текст и число: quantity_text < 0 вызывает TypeError.
  • Записать невозможное условие, например discount < 0 and discount > 100.
  • Рассчитать итог до проверки отрицательной цены.
  • Не проверить границы: ровно 0 и ровно 100.

Упражнение

Создайте discount_rule.py. Программа принимает сумму и процент скидки. Отрицательная сумма запрещена; скидка должна находиться в диапазоне 0–100. Для допустимых значений программа печатает скидку и итог. Проверьте проценты 0, 100, -1, 101 и 15.

Самопроверка

  • Почему условие диапазона использует and по смыслу, хотя записано цепочкой сравнений?
  • Какая ветка выполняется при количестве 0?
  • Чем техническая ошибка преобразования отличается от нарушения бизнес-правила?

← Предыдущий урок · Следующий урок →