Ваша функция должна получить элемент, который должен распечатать как параметр. Я использовал f-строку для форматирования вывода. Это намного приятнее, чем конкатенация строк вручную.
def final_string(item):
print(f"{item['number']} {item['name']} @ ${item['price']} ea ${item['item_total']}")
Кстати, функция final_string
должна быть определена на верхнем уровне, а не в функции questions
.
Теперь вам нужно добавьте параметр, где вы вызываете функцию.
for i in range(len(grocery_history)):
final_string(grocery_history[i])
Но использование диапазона по длине итерируемого для доступа к отдельным элементам не очень pythoni c и более сложный, чем это должно быть. Итерируемый (как список) ... итерируемый. Поэтому измените этот код на:
for item in grocery_history:
final_string(item)
Чтобы вычислить общий итог, вы должны сложить сумму для каждого элемента. Поскольку ваш элемент представляет собой словарь, а общее количество элементов представляет собой значение записи с ключом 'item_total'
, вам необходимо добавить эти значения.
grand_total = 0
for item in grocery_history:
grand_total += item['item_total']
Или как один вкладыш, используя sum
и генератор.
grand_total = sum(item['item_total'] for item in grocery_history)