Python
Этап 1
Напишите класс Good, представляющий товар в корзине покупателя.
При создании объекта товара нужно указывать название и цену за единицу, а также количество. По умолчанию количество = 1.
Товар должен иметь метод для получения общей цены с учётом количества.
Товар должен иметь метод для вывода себя на экран в следующем формате (название до 20 символов, цены до 7 символов, 2 после точки, количество - до 3 символов):
Bread 17.00 * 3 = 51.00
Этап 2
Напишите класс DiscountGood - товар со скидкой.
Товар со скидкой наследуется от обычного товара.
При создании товар со скидкой кроме названия, цены и количества принимает величину скидки в процентах, например: 25, 50, 70 и т.д. (до 99). Переопределите конструктор и используйте super() для инициализации родительского класса.
Переопределите метод для подсчёта итоговой цены так. чтобы он учитывал скидку. Используйте super() для получения итоговой цены без скидки.
Переопределите метод для вывода товара в чеке так, чтобы после строки чека выходило значение скидки:
Juice 80.00 * 1 = 64.00 (-20%)
Answers & Comments
class Good():
def __init__(self, name:str, price:float, count:int=1 ):
self.name = name
self.price = price
self.count = count
self.calculate_the_price()
def calculate_the_price(self):
self.cost=self.price*self.count
def print_me(self):
print(self.name[:20], str(round(self.price,2)), '*',str(self.count)[:3],'=', round(self.cost, 2))
class DiscountGood(Good):
def __init__(self,name:str, price:float, disc:int, count:int = 1):
self.disc=disc
super().__init__(name, price, count)
def calculate_the_price(self):
super().calculate_the_price()
self.cost=self.cost*(100-self.disc)/100
def print_me(self):
print(self.name[:20], str(round(self.price,2)), '*',str(self.count)[:3],'=', round(self.cost, 2), '(-' + str(self.disc)+'%)')
a=Good("Apple", 120.1234, 90)
a.print_me()
b=DiscountGood("Apple", 120.1234, 10, 90)
b.print_me()