This time I try PyBites Code Challenge as a part of my 100 python.
The Challenge objective is as follows:
Read in dictionary.txt (a copy of /usr/share/dict/words on my Mac) and calculate the word that has the most value in Scrabble based on LETTER_SCORES which is imported in wordvalue-template.py.
This is my code:
from data import DICTIONARY, LETTER_SCORES def load_words(word_dict): """Load dictionary into a list and return list""" words = [] with open(word_dict, 'r') as f: words.extend(f.read().split("\n")) return words def calc_word_value(word): """Calculate the value of the word entered into function using imported constant mapping LETTER_SCORES""" score = 0 for c in word: if c.isalpha(): score += LETTER_SCORES[c.upper()] return score def max_word_value(word_dict=DICTIONARY): """Calculate the word with the max value, can receive a list of words as arg, if none provided uses default DICTIONARY""" words = load_words(word_dict) max_word, max_val = "", 0 for word in words: val = calc_word_value(word) if val > max_val: max_word, max_val = word, val return max_word, max_val if __name__ == "__main__": max_word, max_val = max_word_value() print(f"{max_word} has the biggest sum of {max_val}.")
It’s quite simple and I received the result in sub-second.