forked from pybites/challenges
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e20fcba
commit fa00bc2
Showing
1 changed file
with
34 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
from data import DICTIONARY, LETTER_SCORES | ||
import re | ||
|
||
|
||
def load_words(): | ||
"""Load dictionary into a list and return list""" | ||
file = open(DICTIONARY) | ||
words = file.read().splitlines() | ||
file.close() | ||
|
||
return words | ||
|
||
|
||
def calc_word_value(word): | ||
"""Calculate the value of the word entered into function | ||
using imported constant mapping LETTER_SCORES""" | ||
_word = re.findall('[A-Za-z]', word) # only letters | ||
letters = [l.upper() for l in _word] | ||
score = sum(LETTER_SCORES[l] for l in letters) | ||
return score | ||
|
||
|
||
def max_word_value(words=[]): | ||
"""Calculate the word with the max value, can receive a list | ||
of words as arg, if none provided uses default DICTIONARY""" | ||
if len(words) < 1: | ||
words = load_words() | ||
word_values = [calc_word_value(w) for w in words] | ||
mword, _ = max(zip(words, word_values), key=lambda x: x[1]) | ||
return mword | ||
|
||
|
||
if __name__ == "__main__": | ||
pass # run unittests to validate |