这是我正在做的家庭作业。
我有一个看起来像这样的.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()
答案 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