从用户输入变量向Python字典添加信息

从用户输入变量向Python字典添加信息,python,list,dictionary,Python,List,Dictionary,我已经为这项任务寻找了大约两天的答案。我发现梅也有类似的问题,但没有一个能真正解决这个问题。我相信这很简单,但我在18年的假期后回到学校。我试图从用户输入中添加一个条目到字典中,我们正在制作一个购物清单。我一直在覆盖数据,而不是在字典中添加数据。我可以把它添加到列表中。以下是我的代码供参考: 杂货店_项目={} 杂货店历史=[] #用于检查while循环条件是否满足的变量 停止=正确 选择=0 总计=0 项目总数=0 当stop==True时: 当前_项={} 当前_项目[“名称”]=(输入('

我已经为这项任务寻找了大约两天的答案。我发现梅也有类似的问题,但没有一个能真正解决这个问题。我相信这很简单,但我在18年的假期后回到学校。我试图从用户输入中添加一个条目到字典中,我们正在制作一个购物清单。我一直在覆盖数据,而不是在字典中添加数据。我可以把它添加到列表中。以下是我的代码供参考:

杂货店_项目={}
杂货店历史=[]
#用于检查while循环条件是否满足的变量
停止=正确
选择=0
总计=0
项目总数=0
当stop==True时:
当前_项={}
当前_项目[“名称”]=(输入('项目名称:\n'))
当前_项目[“数量”]=int(输入('购买数量:\n'))
当前项目[“成本”]=浮动(输入(“每项价格:\n”))
杂货店_历史记录。追加(当前_项目)
杂货店商品。更新(当前商品)
打印('是否要输入其他项目?')
choice=str(输入(“输入'c'表示继续,或输入'q'表示退出:\n”))
如果选项=='c':
停止=正确
其他的
停止=错误
#总计=0
#项目总数=0
对于范围内的i(len(杂货店商品)):
项目总数=(食品杂货项目['数量]*食品杂货项目['成本])
#打印(“----------”)
#印刷品(杂货店商品)
#印刷(杂货店历史)
#打印(“----------”)
总计+=项目总计
#输出杂货项目的信息以匹配此示例:
#2苹果@每台1.49美元2.98美元
打印(杂货项目['quantity']、“”、杂货项目['name']、“@”、“$”、杂货项目['cost']、“ea”、“$”(项目总数))
打印(“总计:$”,总计')
#将项目总数设置为0
项目总数=0
对于经验丰富的程序员,我为“#”感到抱歉,但我一直在尝试测试,看看我把事情搞砸了

以下是我得到的:

Item name:
Quantity purchased:
Price per item:
Would you like to enter another item?
Type 'c' for continue or 'q' to quit:
Item name:
Quantity purchased:
Price per item:
Would you like to enter another item?
Type 'c' for continue or 'q' to quit:
Item name:
Quantity purchased:
Price per item:
Would you like to enter another item?
Type 'c' for continue or 'q' to quit:
4  onions @ $ 0.79 ea $ 3.16
4  onions @ $ 0.79 ea $ 3.16
4  onions @ $ 0.79 ea $ 3.16
Grand total: $ 9.48
这是我应该得到的:

Item name:
Quantity purchased:
Price per item:
Would you like to enter another item?
Type 'c' for continue or 'q' to quit:
Item name:
Quantity purchased:
Price per item:
Would you like to enter another item?
Type 'c' for continue or 'q' to quit:
Item name:
Quantity purchased:
Price per item:
Would you like to enter another item?
Type 'c' for continue or 'q' to quit:
1 milk @ $2.99 ea $2.99
2 eggs @ $3.99 ea $7.98
4 onions @ $0.79 ea $3.16
Grand total: $14.13
我已经确定杂货店历史记录列表是正确的,但杂货店项目字典只是被最后一个条目覆盖了

从我能够使用的一些代码来看,它似乎是Python3.x,应该是3.x

这里为您提供了一些工作代码:)

杂货店项目。更新(当前项目)
只需更新字典键和值 对于最新的给定键和值,您每次都有不同的值但键相同,这就是为什么您只有最新输入的项目

对于范围内的i(len(杂货店商品))
将始终迭代3次 不考虑输入,因为len(杂货店商品)=3('name', “数量”、“成本”)。这就是为什么你有3行
4个洋葱@0.79美元,一个$3.16
,尽管你在杂货店清单上只有1个项目

下面是您对该代码的预期输出:

1 milk @ $2.99 ea $2.99
2 eggs @ $3.99 ea $7.98
4 onions @ $0.79 ea $3.16
Grand total: $14.13

grocery_history
[['1.Sale: 1 milk from 2.99 Total: 2.99'],
 ['2.Sale: 2 eggs from 3.99 Total: 7.98'], 
 ['3.Sale: 4 onions from 0.79 Total: 3.16']]

我祝你18年后在学校取得成功:)

在输入数据后,你的缩进好像消失了。
while stop==True:
循环的范围应在
stop
的赋值处结束。因此,后面的代码应该被删除,否则无论
stop
是真是假,它都会作为循环的一部分被执行。我建议使用调试器+断点+求值表达式来测试代码,而不是使用打印…这样更有效、更具启发性。你的努力得到了支持票,祝你好运,谢谢。我们当前使用的网站不允许我进入。它可能会再次下跌。我不知道Python中有调试函数。我将不得不大胆地使用它。我在一个班上,但我想学习更多,变得更加精通Python,因为它看起来非常通用,而且是很好的学习语言。有没有人会推荐一些网站或书籍,能够很好地解释任何人都有过的语言经验?
1 milk @ $2.99 ea $2.99
2 eggs @ $3.99 ea $7.98
4 onions @ $0.79 ea $3.16
Grand total: $14.13

grocery_history
[['1.Sale: 1 milk from 2.99 Total: 2.99'],
 ['2.Sale: 2 eggs from 3.99 Total: 7.98'], 
 ['3.Sale: 4 onions from 0.79 Total: 3.16']]