import random from words import WORDLE_WORDS from game_utils import * SHOW_ANSWER = True def is_valid_guess(guess: str): guess = uppercase(guess.strip()) if len(guess) != 5: print("You can only guess words with FIVE letters!") return False if guess not in WORDLE_WORDS: print("That's not a valid word with five letters!") return False return True def how_many_exact_matches(word1: str, word2: str) -> int: count: int = 0 for i in range(len(word1)): if word1[i] == word2[i]: count += 1 return count def get_counts_of_letters_1(word: str) -> dict[str, int]: d: dict[str, int] = {} for letter in UPPERCASE_LETTERS: count: int = 0 for c in word: if c == letter: count += 1 d[letter] = count return d def get_counts_of_letters(word: str) -> dict[str, int]: d: dict[str, int] = {} for c in word: if c in d: d[c] = d[c] + 1 else: d[c] = 0 + 1 return d def how_many_overall_matches(guess: str, answer: str) -> int: guess_count = get_counts_of_letters(guess) answer_count = get_counts_of_letters(answer) count: int = 0 for letter in UPPERCASE_LETTERS: count_a: int = 0 if letter in guess_count: count_a = guess_count[letter] count_b: int = 0 if letter in answer_count: count_b = answer_count[letter] count += min(count_a, count_b) return count print(how_many_overall_matches("AAB", "BAC")) def play_wordle_game(): answer = random.choice(WORDLE_WORDS) if SHOW_ANSWER: print("(DEBUG) This answer is \"" + answer + "\"") guess = None while guess != answer: guess = input("Guess a word: ") if guess == answer: print("Nice job! That's correct!") elif is_valid_guess(guess): exact = how_many_exact_matches(guess, answer) print("You got " + str(exact) + " letter(s) exactly correct!") again = True while again: play_wordle_game() again = prompt_yes_no('Would you like to play again (y/n)? ')