python-3.x - 当用户输入键时,将字典值增加 1
问题描述
我有一个系统,其中使用字典将名称列表分配给值 0。每当用户输入他们的名字时,我想让该值增加 1。
我尝试使用 for 循环遍历字典,但是这仅在字典中逐词搜索名称,并且如果输入的名称不在循环所在的任何迭代中,则不会更新值。
i = 0
dic = {"tim":0, "jimbo":0}
while True:
while i < len(dic):
for name, value in dic.items():
try:
userinput = input("Enter name: ").lower()
except(ValueError):
print("Error")
if userinput in name:
dic[name] += 1
i += 1
print(dic)
最后的 print 语句确实给出了更新的值,但前提是输入的名称在循环的当前迭代内。理想情况下,我希望每当输入字典中的名称时更新该值。控制台在四次输入后似乎也冻结了。
是否有更明智的方法来执行此操作,特别是针对具有 100 个以上键的更大字典执行此操作?
解决方案
要让循环不断询问用户输入,只需摆脱内部while
和for
循环并将测试从更改if userinput in name
为if userinput in dic.keys()
:
i = 0
dic = {"tim":0, "jimbo":0}
while True:
try:
userinput = input("Enter name: ").lower()
except(ValueError):
print("Error")
if userinput in dic.keys():
dic[userinput] += 1
print(dic)
当然,您可能想为自己建造一个逃生通道。以下将允许您退出while
无限CTRL+c
:
while True:
try:
try:
userinput = input("Enter name: ").lower()
except(ValueError):
print("Error")
if userinput in dic.keys():
dic[userinput] += 1
print(dic)
except KeyboardInterrupt:
break
推荐阅读
- html - 如何在具有不同属性的同名元素之间进行选择
- python - 如何将所有 txt.files 的内容保存在一个文件夹中并将它们存储在一个列表中?
- twitter-bootstrap - 如何在角度中使用 bootstrap4 纠正小型设备的响应代码
- python-3.x - “POST /details/3 HTTP/1.1” 405 0(提交评论时出现 405 错误)
- java - 从 URL 获取位图
- php - 循环中的日期 - 显示第一个/跳过其余的
- ios - UIScrollView 在 Autolayout 或缩放后停止滚动
- java - 在文件选择器中包含我自己的示例图片(Intent.ACTION_PICK)
- javascript - 如何在javascript中创建对象数组?
- mongodb - 一些MongoDB聚合时如何保留旧字段?