Unbound local Error

В общем, перед запуском программы в коде я создаю три переменных (urmoney, playcount и wincount и их двойники с цифрой на конце). В коде объявил их как глобальные. После их объявления, я вызываю функцию (которую объявил заранее до переменных). Вот часть кода:

if casinorandom == ">":
    print(Fore.GREEN + "Окей, ты думаешь что выпадет больше.")
    random1 = random.randint(1, 20)
    if int(random1) < 10:
        print(Fore.RED + 'Лол, ты всрал свои money')
        urmoney = urmoney1 - playvalue1
        playcount = playcount2 + 1
        playcount2 = playcount
        urmoney1 = urmoney
        lobby()
    else:
        print(Fore.GREEN + Back.YELLOW + 'Гц, ты выйграл!!')
        urmoney = urmoney1 + (playvalue1 * 2)
        playcount = playcount2 + 1
        playcount2 = playcount
        wincount = wincount2 + 1
        wincount2 = wincount
        urmoney1 = urmoney
        lobby()

Как только функция доходит до изменения переменных, программа выдаёт ошибку:

UnboundLocalError: local variable 'urmoney1' referenced before assigment.

По поводу переменных с числом на конце, это моя попытка сделать костыль. Он однажды сработал, однако в функции info(), которая должна печатать в консоль текст о заслугах игрока (сколько раз выйграл, сыграл, сколько у него денег), всё осталось так-же как и было (при запуске программы, переменная urmoney = 50, а urmoney1 = urmoney). Причём в другой функции, в которой так-же используется переменная urmoney, не выдаёт никаких ошибок (задача этой функции - запросить значение playvalue1, а далее - сравнить, если переменная больше чем urmoney или равна 0, то она возвращала юзера обратно в начало функции.) Если сделать вот так -

print(Fore.GREEN + "Окей, ты думаешь что выпадет больше.")
random1 = random.randint(1, 20)
if int(random1) < 10:
    print(Fore.RED + 'Лол, ты всрал свои money')
    urmoney = int(urmoney) - playvalue1
    playcount = int(playcount) + 1
    lobby()
else:
    print(Fore.GREEN + Back.YELLOW + 'Гц, ты выйграл!!')
    urmoney = int(urmoney) + (playvalue1 * 2)
    playcount = int(playcount) + 1
    wincount = int(wincount) + 1
    lobby()

Выдаст ошибку:

UnboundLocalError: local variable 'urmoney' referenced before assigment.

Ответы (2 шт):

Автор решения: Rufat

Вероятно приведен неполный фрагмент кода.

Но судя по текущему коду есть 2 проблемы в первом блоке:

urmoney = urmoney1 - playvalue1

и

urmoney = urmoney1 + (playvalue1 * 2)

urmoney1 - используется до присваивания значения.

Аналогичные проблемы присутствуют во втором блоке кода для переменной urmoney.

Необходимо определить значения указанных переменных до блока проверки условий if.

→ Ссылка
Автор решения: towerty

Нашёл решение, вместо urmoney = urmoney + x надо было написать urmoney += x

→ Ссылка