# data[].attributes.body
Difficulty: ★★★★

This Task depends on task 4: Check user answer. Please make sure task 4 is completed and merged before you embark on this one.

Modify check_answer() function to give user a hint on the letters they get right and they letters get wrong (look at the attached PDF for details). This function should still return a Boolean that tells us whether the user has guessed correctly.

# data[].attributes.body
Difficulty: ★★★☆

Implement add_word() function to append new words to the wordbank (the file specified by the parameter filepath). The function should ask user to input new words then append these new words to the end of the wordbank file.

Open the attached PDF to see how it works.

# data[].attributes.body
Difficulty: ★★

This task depends on task 5: Get user command. Please make sure task 5 is completed and merged before you embark on this one.

Implement play() function to display the jumbled word to user, gets user answer, and tell the user whether their guess is correct

Check the attached PDF for details

# data[].attributes.body
Difficulty: ★★★★

This task depends on task 5: Get user command. Please make sure task 5 is completed and merged before you embark on this one.

In get_user_command() function, we give user 3 options: 1. play the jumble game; 2. add new words to the wordbank; and 0. exit the program. But we cannot trust our user to always input a valid option: they could enter 3, 4, -1, or worse yet, they might enter a non-numeric string (e.g. "good morning") which will crash our program with a ValueError.

Please modify get_user_command() function to make sure that user has entered a valid option.

# data[].attributes.headline
Task 8: Give user 5 chances to guess the word

# data[].attributes.subject
Task 8: Give user 5 chances to guess the word

# data[].attributes.body
Difficulty: ★★★

This task depends on task 6: Play the jumble game. Please make sure that task 6 is completed and merged before you embark on this one.

In the first implementation of play(), the user has only one chance to guess the word. Modify the function to give the user 5 chances to give the correct answer. Declare that they lose the game if they're not able to get the correct word with 5 guesses.

Open the attached PDF to see how it works.

# data[].attributes.headline
Task 1: Select random word from the word bank

# data[].attributes.subject
Task 1: Select random word from the word bank

# data[].attributes.body
Difficulty: ★★★★

Implement select_word() function to select a random word from the wordbank (the file specified by parameter filepath). The function should return the selected word as a string.

After you complete the implementation, run `tests/select_word_test.py` to test your code.

# data[].attributes.body
Difficulty: ★

Implement check_answer() function to check whether the user has correct guessed the original word. This function receives two strings as parameters, the original word and the user's answer. It should return True if the user's answer matches the original word (case insensitive) and False if not.

After you complete the implementation, run `tests/check_answer_test.py` to test your code.

# data[].attributes.body
Difficulty: ★★

Implement get_user_command() function to allow user to choose whether they want to 1. play the jumble game; 2. add new words to the wordbank; or 0. exit the program. The function should return the user's choice as an integer.

# data[].attributes.body
Difficulty: ★★★★☆

Implement jumble_word() function, which receives an English word as parameter and returns a string with the letters of the word in shuffled order, e.g. 'design' => 'igdnes'

After you complete the implementation, run `tests/jumble_word_test.py` to test your code.