首页 > 解决方案 > 在 Python 中从字典中添加值

问题描述

例如,用户将输入四种颜色(允许重复),其中orange = o, blue = b, green = g, red = r. 我将为这些颜色中的每一种分配值。

dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
colorScore = 0
for i in range(1):
    color = input("Enter 4 characters of colors: ")
    if "o" in color:
        colorScore += dictColor["o"]
    if "b" in color:
        colorScore += dictColor["b"]
    if "g" in color:
        colorScore += dictColor["g"]
    if "r" in color:
        colorScore += dictColor["r"]
print("The color score is",colorScore)

如果用户输入rbgo,程序运行良好并输出值 18。但是,如果用户输入一个重复项,例如rrgo,程序输出 16,这不是正确的输出。我如何让我的程序能够识别这些重复项?

标签: python

解决方案


您只对每个角色进行一次测试。循环输入字符串,并将每个字符用作字典的键:

dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
color = input("Enter 4 characters of colors: ")

colorScore = 0
for character in color:
    if character in dictColor:
        colorScore += dictColor[character]

或者,使用sum()函数,并dict.get()为任何无法识别的字符返回默认颜色分数 0:

dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
color = input("Enter 4 characters of colors: ")
colorScore = sum(dictColor.get(c, 0) for c in color)

上面将生成器表达式传递给sum()函数,该函数将遍历表达式的每个结果。因此,对于c字符串中的每个color(每个字符),dictColor.get(c, 0)表达式获取给定键的值,如果键缺失,则获取 0,sum()并将所有这些结果相加。


推荐阅读