Ошибка:UnboundLocalError: local variable 'winner' referenced before assignment
Начинаю только изучать python и решил написать простенькую текстовую игру. Написал всё прекрасно работал но теперь захотелось этой игре сделать рестарт чтобы не перезапускать программу а уже в самой игре сделать рестарт.И тут возникает проблема
**Игра угадай число 4 Введите число: 4 Поздравляю ты победил! Число попыток: 1 Хотите сыграть ещё Y/N: y Traceback (most recent call last): File "test.py", line 37, in <module> game_reset () File "test.py", line 12, in game_reset if x == winner: UnboundLocalError: local variable 'winner' referenced before assignment**
Вот сам код:
import time
import random
from colorama import Fore, Back, Style
from colorama import init
init()
print(Fore.CYAN + Back.WHITE + Style.DIM)
print("Игра угадай число")
print(Style.RESET_ALL)
winner = random.randint(1,50)
b = 0
def game_reset ():
if x == winner:
winner = random.randint(1,50)
b = 0
else:
pass
print(winner)
while True:
print(Back.BLUE)
x = input('Введите число: ')
if x.isdigit():
x = int(x)
b += 1
else:
print(Back.RED)
print('Введите челое число.')
continue
if x == winner:
print(Back.GREEN)
print(" Поздравляю ты победил!\n Число попыток: " + str(b))
game_next = input('Хотите сыграть ещё Y/N: ')
if game_next in ('Y','y'):
game_reset ()
else:
print('Спасибо за игру!')
break
elif x > winner:
print(Back.MAGENTA)
print("Ваше число больше. Попробуйте ещё раз.")
continue
else:
print(Back.MAGENTA)
print("Ваше число меньше. Попробуйте ещё раз.")
continue
time.sleep(5)
Как решить мою проблему?
Ответы (2 шт):
Автор решения: MarianD
→ Ссылка
Не очень хороший совет, но будет работать:
После команды
def game_reset ():
напишите
global winner
Автор решения: Karlson21
→ Ссылка
Так, вроде, тоже работает. Тогда и функция с перезапуском не нужна.
....
if x == winner:
print(" Поздравляю ты победил!\n Число попыток: " + str(b))
game_next = input('Хотите сыграть ещё Y/N: ')
if game_next in ('Y','y'):
winner = random.randint(1,50)
b = 0
continue
....