字典与运行总计

时间:2011-11-07 00:33:30

标签: dictionary python-3.x

这是我正在做的家庭作业。

我有一个看起来像这样的.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

我要做的是保持一个总计,当你输入单词“Eggs”然后单词“bread”它需要增加两者的成本并继续前进直到“退出”我也是将遇到'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 个答案:

答案 0 :(得分:1)

该文件是否包含每种不同杂货的价格?

用户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