Control 5. Scrabble

TI2 Sección 1 1-2017

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: ")


Ingrese su nombre y apellido: andres nuñez

In [15]:
calcula_puntaje(nombre.upper(), letras)


Out[15]:
20