Доступ к элементам кортежа

#python #oop

#python #ооп

Вопрос:

Эта проблема требует нескольких входных данных, разделенных пробелами (разбейте их на список кортежей), и возвращает общую стоимость продуктов, умноженную на их количество. Решая эту проблему, я застрял в методе Cost .Это не дает мне надлежащего результата.

Проблема, с которой я сталкиваюсь:

  1. Метод затрат не дает мне сумму цены продукта
  2. Если я печатаю список кортежей — print(part2.create_list_of_tuples()) ; Я получаю неожиданный список кортежей. пример —

Мой заданный ввод-

формула ввода — sl.no.<space>product<space>quantity<space>price

 Enter an entry: 1 book 3 20
Enter an entry: 2 pen 10 5
Enter an entry: 3 notebook 10 10
Enter an entry: 0

  

Вывод-

 [(1, 'book', 3, 20), (1, 'book', 3, 20), (2, 'pen', 10, 5), (1, 'book', 3, 20), (2, 'pen', 10, 5), (3, 'notebook', 10, 10)]
  

Фактический результат должен быть-

 Product price 210
[(1, 'book', 3, 20), (2, 'pen', 10, 5), (3, 'notebook', 10, 10)]
  

Кто-нибудь может помочь мне решить это?

 class products:
    def __init__(self):
        self.sl_no = list()
        self.item_name = list()
        self.purchase_amount = list()
        self.purchase_cost = list()
        self.list_of_tuples = list()

    def create_list_of_tuples(self):
        self.list_of_tuples = list(zip(self.sl_no, self.item_name, self.purchase_amount, self.purchase_cost))
        return self.list_of_tuples


    def Cost(self):
        Sum_purchase_cost = 0
        for j in self.list_of_tuples:
            Sum_purchase_cost  = ((j[2]) * (j[3]))
        print(f"Product price {Sum_purchase_cost}")

part2=product()
tuplelist = []
while True:
    a = input('Enter an entry: ')
    if a == str(0):
        break
    tuplelist.append(tuple(a.strip().split()))
    for i in tuplelist:
        part2.sl_no.append(int(i[0]))
        part2.item_name.append(i[1])
        part2.purchase_amount.append(int(i[2]))
        part2.purchase_cost.append(int(i[3]))
part2.Cost()
print(part2.create_list_of_tuples())
  

Комментарии:

1. Как отлаживать небольшие программы

Ответ №1:

Внутренний for цикл выполняется для каждого элемента, уже присутствующего в tuplelist , каждый раз, когда был добавлен новый элемент.

Либо отмените выделение этого цикла (чтобы он выполнялся только один раз), либо сохраните вновь созданный кортеж в переменной i и удалите for инструкцию цикла (но не тело цикла).