Usted cuenta con un diccionario "letras" para jugar Scrabble, en el cual cada letra posee una tupla, donde el primer elemento es el puntaje de la letra y el segundo representa cuantas fichas existen de esa letra.
In [12]:
letras = {"A" : (1,12) , "B" : (3,2) , "C" : (3,4), "D" : (2,5), "E" : (1,12), "F" : (4,1),
"G" : (2,2) , "H" : (4,2) , "I" : (1,6), "J" : (8,1), "L" : (1,4), "M" : (3,2),
"N" : (1,5) , "O" : (1,9) , "P" : (3,2), "Q" : (5,1), "R" : (1,5), "S" : (1,6),
"T" : (1,4) , "U" : (1,5) , "V" : (4,1), "X" : (8,1), "Y" : (4,1), "Z" : (10,1)}
Debe completar la funcion "calcula_puntaje", que recibe como parametro un texto y calcula el puntaje de su texto como la suma de los puntos de acuerdo al diccionario, en el caso de no haber fichas suficientes debe retornar 0 puntos, pues no es posible crearlo. Si su texto posee un caracter que no se encuentra en el diccionario, omita esa letra en el calculo del puntaje.
In [13]:
def calcula_puntaje(str, dict):
puntos = 0
usadas = {}
for i in str.upper():
if i not in usadas.keys():
usadas[i] = 1
else:
usadas[i] += 1
for i in usadas.keys():
if i in dict.keys():
if usadas[i] > dict[i][1]:
return 0
else:
puntos += usadas[i] * dict[i][0]
return puntos
ATENCION: No ingrese acentos, si su nombre los posee.
In [14]:
nombre = input("Ingrese su nombre y apellido: ")
In [15]:
calcula_puntaje(nombre.upper(), letras)
Out[15]: