Scrabble Score
Scrabble Score in Python
from enum import IntEnum

class Scrabble(IntEnum):
    A = E = I = O = U = L = N = R = S = T = 1
    D = G = 2
    B = C = M = P = 3
    F = H = V = W = Y = 4
    K = 5
    J = X = 8
    Q = Z = 10

def score(word):
    return sum(Scrabble[character] for character in word.upper())

This approach uses an Enum to define the score of each letter. An Enum (also known as an enumeration) is an object with named attributes assigned unique values. These attributes are referred to as the enumeration members. Enums can be iterated over to return their members in definition order. Values can be accessed via index syntax using the member name (similar to how a dictionary lookup works) . Enums are immutable, and their members function as constants. The enum module was added to python standard library (also known as stdlib) in Python 3.4.

This approach uses an IntEnum. An IntEnum is very similar to an Enum, but restricts assigned values to ints. This allows the IntEnum to act as a collection of integers. In fact, IntEnums are considered subclasses of ints.

To use an IntEnum you need to first import it using: from enum import IntEnum. Then you can define your IntEnum subclass.

The IntEnum subclass is defined by using the class keyword, followed by the name you are using for the class, and then the IntEnum class you are subclassing in parenthesis:

class ClassName(IntEnum):

Member names are declared as constants (ALL CAPS) and assigned values using the = operator.

This approach works by creating all the uppercase letters as members with their values being the score. After the IntEnum is defined, the score function is defined.

The score function takes a word as an argument. The score function uses the same generator expression as the [dictionary approach][dictionary-approach], but with a slight modification. Instead of looking up the value in a dictionary, it looks up the InEnum class member value.

29th May 2024 · Found it useful?