Урок 003: условия и бизнес-правила¶
Цель¶
Записать правила допустимых значений и выбирать поведение программы с помощью if, elif и else.
Логические выражения¶
Сравнение возвращает True или False:
Не путайте = и ==: первое присваивает значение, второе сравнивает два значения.
| Оператор | Смысл |
|---|---|
== |
равно |
!= |
не равно |
<, <= |
меньше, меньше или равно |
>, >= |
больше, больше или равно |
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?
- Чем техническая ошибка преобразования отличается от нарушения бизнес-правила?