So, I've been working on a python version of the game wheel of fortune, here's the code so far from random import choice def spin_the_wheel(): wheel = ["BANKRUPT", 650, "FREE PLAY", 700, "LOSE A TURN", 800, 500, 650, 500, 900, "BANKRUPT", 2500, 500, 900, 700, 600, 800, 500, 700, 500, 600, 550, 500, 900] return choice(wheel) def make_text_blank(text): l = list(text) for i in range(len(text)): if text.isalpha(): l = "_" return "".join(l) def wheel_of_fortune(): print("The category for this puzzle is game show") text = "WHEEL OF FORTUNE" blank_text = make_text_blank(text) print(blank_text) print("Player 1 is up first") while blank_text != text: letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] player1(text, blank_text, letters, 0, 0, 0) def player1(text, blank_text, letters, player1amount, player2amount, player3amount): prize = spin_the_wheel() if prize == "BANKRUPT": print("Bankrupt") player1amount = 0 print("We go to player 2 now") player2(text, blank_text, 0, player2amount, player3amount) elif prize == "LOSE A TURN": print("Lose a turn") print("We go to player 2 now") player2(text, blank_text, player1amount, player2amount, player3amount) elif prize == "FREE PLAY": print("Free Play") letter = input("Guess a letter: ").upper() if letter not in text: letters.remove(letter) print("There are no " + letter + "'s") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) elif letter not in letters: print("That letter's already been called") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) else: letters.remove(letter) if text.count(letter) == 1: print("There is 1 " + letter) for i in range(len(text)): if text == letter: blank_text = blank_text.replace(blank_text, letter) print(blank_text) player1amount += 500 def do(): choice = input("Would you like to spin the wheel, buy a vowel, or solve the puzzle?: ") if choice == "spin the wheel": print("OK, spin the wheel") player1(text, blank_text, letters, player1amount, player2amount, player3amount) elif choice == "buy a vowel": vowel = input("OK, buy a vowel: ").upper() if vowel not in text: letters.remove(vowel) print("There are no " + vowel + "'s") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) elif vowel not in letters: print("That vowel's already been called") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) else: letters.remove(vowel) if text.count(vowel) == 1: print("There is 1 " + vowel) for i in range(len(text)): if text == vowel: blank_text = blank_text.replace(blank_text, vowel) print(blank_text) do() else: n = text.count(vowel) print("There are " + str(n) + " " + vowel + "'s") for i in range(len(text)): if text == vowel: blank_text = blank_text.replace(blank_text, vowel) print(blank_text) do() elif choice == "solve the puzzle": solution = input("OK, solve the puzzle: ").upper() if solution == text: print("That's right") print(text) print("Player 1 amount: $" + str(player1amount)) print("Player 2 amount: $" + str(player2amount)) print("Player 3 amount: $" + str(player3amount)) else: print("That's not right") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) do() else: n = text.count(letter) print("There are " + str(n) + " " + vowel + "'s") for i in range(len(text)): if text == letter: blank_text = blank_text.replace(blank_text, letter) print(blank_text) p = 500 * n player1amount += p def do(): choice = input("Would you like to spin the wheel, buy a vowel, or solve the puzzle?: ") if choice == "spin the wheel": print("OK, spin the wheel") player1(text, blank_text, letters, player1amount, player2amount, player3amount) elif choice == "buy a vowel": vowel = input("OK, buy a vowel: ").upper() if vowel not in text: letters.remove(vowel) print("There are no " + vowel + "'s") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) elif vowel not in letters: print("That vowel's already been called") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) else: letters.remove(vowel) if text.count(vowel) == 1: print("There is 1 " + vowel) for i in range(len(text)): if text == vowel: blank_text = blank_text.replace(blank_text, vowel) print(blank_text) do() else: n = text.count(vowel) print("There are " + str(n) + " " + vowel + "'s") l = list(blank_text) for i in range(len(text)): if text == vowel: blank_text = blank_text.replace(blank_text, letter) print(blank_text) do() elif choice == "solve the puzzle": solution = input("OK, solve the puzzle: ").upper() if solution == text: print("That's right") print(text) print("Player 1 amount: $" + str(player1amount)) print("Player 2 amount: $" + str(player2amount)) print("Player 3 amount: $" + str(player3amount)) else: print("That's not right") print("We go to player 2 now") player2(text, blank_text, letters, player1amount, player2amount, player3amount) do() So, the problem here is that everytime I guess a letter, choose the option "buy a vowel", and guess a vowel that's in the text, it throws out this error: Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> wheel_of_fortune() File "C:\Users\Harry\Documents\randompythonprograms\wheeloffortune.py", line 19, in wheel_of_fortune player1(text, blank_text, letters, 0, 0, 0) File "C:\Users\Harry\Documents\randompythonprograms\wheeloffortune.py", line 97, in player1 do() File "C:\Users\Harry\Documents\randompythonprograms\wheeloffortune.py", line 82, in do blank_text = blank_text.replace(blank_text, vowel) UnboundLocalError: local variable 'blank_text' referenced before assignment And I just can't seem to figure out what's causing the error, since the code is large, so maybe one of you can figure it out Continue reading...