Por ejemplo, el usuario ingresará cuatro colores (se permiten duplicados) donde orange = o, blue = b, green = g, red = r
. Asignaré valores a cada uno de estos colores.
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)
Si el usuario ingresara rbgo
, el programa funciona bien y genera un valor de 18. Sin embargo, si el usuario ingresó un duplicado, como rrgo
, el programa genera 16, que no es la salida correcta. ¿Cómo puedo hacer que mi programa reconozca estos duplicados?
Solo estás probando para cada personaje una vez. Haga un bucle sobre la cadena de entrada y use cada carácter como clave para su diccionario:
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]
o, usando la sum()
función , y dict.get()
para devolver una puntuación de color predeterminada de 0 para cualquier carácter no reconocido:
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)
Lo anterior pasa una expresión generadora a la sum()
función, que recorrerá cada resultado de la expresión. Entonces, para cada uno c
en la cadena color
(cada carácter), la dictColor.get(c, 0)
expresión obtiene el valor de la clave dada o 0 si falta la clave, y sum()
suma todos esos resultados.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras