首页 > 解决方案 > 当用户输入键时,将字典值增加 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 个以上键的更大字典执行此操作?

标签: python-3.xdictionary

解决方案


要让循环不断询问用户输入,只需摆脱内部whilefor循环并将测试从更改if userinput in nameif 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

推荐阅读