Условие
Полное условие совпадает с 📝 Заданиями. Ниже — пошаговый план решения системы чеков.
Подготовка окружения
- Создайте файл
practice18.pyв VS Code. - Убедитесь, что Python 3.10+ установлен.
Пошаговое решение системы чеков
Шаг 1. Базовый класс Receipt:
class Receipt:
def __init__(self, receipt_id: int, amount: float) -> None:
self.id = receipt_id
self.amount = amount
def __str__(self) -> str:
return f"{self.__class__.__name__} {self.id}: {self.amount}"
Шаг 2. Наследники SaleReceipt и ReturnReceipt:
class SaleReceipt(Receipt):
def __init__(self, receipt_id: int, amount: float) -> None:
if amount <= 0:
raise ValueError("SaleReceipt amount must be positive.")
super().__init__(receipt_id, amount)
def __str__(self) -> str:
return f"SaleReceipt {self.id}: +{self.amount}"
class ReturnReceipt(Receipt):
def __init__(self, receipt_id: int, amount: float) -> None:
if amount >= 0:
raise ValueError("ReturnReceipt amount must be negative.")
super().__init__(receipt_id, amount)
Шаг 3. Класс Shift с методами добавления, возврата и подсчёта.
Проверка в VS Code
python practice18.py
Убедитесь, что:
- Продажи создаются как
SaleReceiptс плюсом. - Возвраты — как
ReturnReceiptс минусом. - Закрытая смена не принимает новые чеки.
- Сумма возврата не превышает исходный чек.