Предмет: Информатика, автор: Python444

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%)

Ответы

Автор ответа: leoden03
0

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()

Похожие вопросы