Вопрос задан 15.07.2023 в 14:14. Предмет Информатика. Спрашивает Якимова Мария.

Для работы небольшого магазинчика вас попросили сделать небольшой набор функций, обеспечивающих

работу с чеками. В качестве пробной версии вам нужно реализовать всего два действия: добавление покупки к набору покупаемых товаров, и печать чека. После того как чек напечатан должно быть возможно вводить новый список товаров. По правилам оформления документов в каждом чеке вы должны напечатать сначала номер чека (нумерация начинается с единицы) и число товаров, затем список товаров с ценами и в конце — итоговую стоимость. Из-за того, что вы не знаете число товаров, пока кассир не «пробьет» последний товар, нельзя печатать чек по мере ввода товаров. Приходится сначала добавить все необходимые товары и только затем печатать весь чек целиком. В конце чека печатается черта (состоящая из пяти знаков минус), по которой он отрывается от ленты.Организуйте две функции: add_item(itemName, itemCost) и print_receipt(), которые реализуют указанный функционал. Форматирование сделайте по шаблону в примере.В случае, когда чек пуст, print_receipt не должна печатать чек. Не забудьте, что после того как чек напечатан, набор выбранных товаров должен обнулиться, чтобы можно было вводить товары для нового чека.ПримерВвод Выводadd_item('Блокнот', 100)print_receipt()add_item('Ручка', 70)print_receipt()print_receipt()add_item('Булочка', 15)add_item('Булочка', 15)add_item('Чай', 5)print_receipt()add_item('Булочка', 15)add_item('Булочка', 15)# (Отменить чек) - этот чек не печатаемВывод:Чек 1. Всего предметов: 1Блокнот - 100Итого: 100-----Чек 2. Всего предметов: 1Ручка - 70Итого: 70-----Чек 3. Всего предметов: 3Булочка - 15Булочка - 15Чай - 5Итого: 35-----Примечания:Это относится к большинству задач, но не лишним будет напомнить, что решить задачу можно несколькими способами.​
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Маснюк Мира.

class Receipt:

   def __init__(self):

       self.number = 1

       self.amount = 0

       self.cost = 0

       self.lines = []

   def add_item(self, item, cost):

       self.amount += 1

       self.lines.append("%s - %s" % (item, str(cost)))

       self.cost += cost

   def new(self):

       self.number += 1

       self.amount = 0

       self.cost = 0

       self.lines = []

   def print(self):

       if self.amount != 0:

           print("Чек %s. Всего предметов: %s" % (self.number, self.amount))

           for line in self.lines:

               print(line)

           print("Итого: %s" % self.cost)

           print("-----")

           self.new()

       

r = Receipt()

def add_item(item, cost, receipt = r):

   receipt.add_item(item, cost)

def print_receipt(receipt = r):

   r.print()

add_item('Блокнот', 100)

print_receipt()

add_item('Ручка', 70)

print_receipt()

print_receipt()

add_item('Булочка', 15)

add_item('Булочка', 15)

add_item('Чай', 5)

print_receipt()

add_item('Булочка', 15)

add_item('Булочка', 15)

# (Отменить чек) - этот чек не печатаем

_________________________________

Этот код печатает следующее:

Чек 1. Всего предметов: 1

Блокнот - 100

Итого: 100

-----

Чек 2. Всего предметов: 1

Ручка - 70

Итого: 70

-----

Чек 3. Всего предметов: 3

Булочка - 15

Булочка - 15

Чай - 5

Итого: 35

-----

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот решение вашей задачи на основе описанных функций:

python
class CashRegister: def __init__(self): self.receipt_number = 1 self.items = [] def add_item(self, itemName, itemCost): self.items.append((itemName, itemCost)) def print_receipt(self): if not self.items: return print(f"Чек {self.receipt_number}. Всего предметов: {len(self.items)}") for itemName, itemCost in self.items: print(f"{itemName} - {itemCost}") total_cost = sum(itemCost for _, itemCost in self.items) print(f"Итого: {total_cost}") print("-----") self.items = [] self.receipt_number += 1 cash_register = CashRegister() cash_register.add_item('Блокнот', 100) cash_register.print_receipt() cash_register.add_item('Ручка', 70) cash_register.print_receipt() cash_register.print_receipt() cash_register.add_item('Булочка', 15) cash_register.add_item('Булочка', 15) cash_register.add_item('Чай', 5) cash_register.print_receipt() cash_register.add_item('Булочка', 15) cash_register.add_item('Булочка', 15) # Не вызываем print_receipt(), чтобы отменить текущий чек

Это решение использует класс CashRegister, который имеет два метода: add_item(itemName, itemCost) для добавления товара и его стоимости к текущему чеку, и print_receipt() для печати текущего чека. Если чек пустой, метод print_receipt() не печатает ничего. После печати чека список товаров обнуляется и увеличивается номер чека.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос