[Python] my code throws out an error i do not understand

Discussão em 'Python' iniciado por Stack, Março 31, 2025.

  1. Stack

    Stack Membro Participativo

    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...

Compartilhe esta Página