在Python中从字典添加值

2024-04-19 16:12:31 发布

您现在位置: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,这不是正确的输出。如何使我的程序能够识别这些重复项?你知道吗


Tags: 用户in程序forif颜色rangegreen
3条回答

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

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]

或者,使用^{} function^{}为任何无法识别的字符返回默认颜色分数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)

上面的函数将generator expression传递给sum()函数,该函数将在表达式的每个结果上循环。因此,对于字符串color(每个字符)中的每个cdictColor.get(c, 0)表达式获取给定键的值,如果缺少键,则获取0,并且sum()将所有这些结果相加。你知道吗

也许最快、更具可读性的解决方案是列表理解:

dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
color = input("Enter 4 characters of colors: ")
print(sum((dictColor[c] for c in color)))

对于color中的每个字符,在字典中查找其分数,并将这些值相加。你知道吗

相关问题 更多 >