Словарь с промежуточным итогом - PullRequest
1 голос
/ 07 ноября 2011

Это домашнее задание, которое я делаю.

У меня есть файл .txt, который выглядит следующим образом.

11
eggs
1.17
milk
3.54
bread
1.50
coffee
3.57
sugar
1.07
flour
1.37
apple
.33
cheese
4.43
orange
.37
bananas
.53
potato
.19

Я пытаюсь сделать промежуточный итогКогда вы набираете слово «Яйца», затем слово «хлеб», нужно добавить стоимость обоих и продолжать до «ВЫХОДА». Я собираюсь столкнуться с «KeyError» и мне тоже нужна помощь с этим.

  def main():
    key = ''
    infile = open('shoppinglist.txt', 'r')
    total = 0
    count = infile.readline()
    grocery = ''
    groceries = {}


    print('This program keeps a running total of your shopping list.')
    print('Use \'EXIT\' to exit.')


    while grocery != 'EXIT':

        grocery = input('Enter an item: ')

        for line in infile:
            line = line.strip()
            if key == '':
                key = line

            else:
                groceries[key] = line
                key = ''

        print ('Your current total is $'+ groceries[grocery])

main()

1 Ответ

1 голос
/ 07 ноября 2011

Содержит ли файл цены каждой из разных продуктов?

Пользовательский оператор input также должен иметь .strip() в конце, так как иногда символы ввода строки могут быть включены из пользовательского ввода.

Вам нужно только один раз прочитать файл, а не в цикле.

Когда пользователь вводит продуктовый продукт, он должен, как вы говорите, проверить, что он существует:

if grocery in groceries:
    ...
else:
    #grocery name not recognised

Я думаю, что у вас должен быть отдельный словарь для хранения счетчиков каждой бакалеи, например: http://docs.python.org/library/collections.html#collections.Counter

import collections
quantitiesWanted = collections.Counter()

Тогда можно запросить любой продукт, как этот quantitiesWanted['eggs'], который вернет 0 по умолчанию.Выполнение чего-то вроде quantitiesWanted['eggs'] += 1 увеличит его до 1 и т. Д.

Чтобы получить текущую сумму, вы можете сделать:

total = 0
for key, value in quantitiesWanted:
    total += groceries[key] * value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...