Python, def не видит переменную

Всем приветики омлетики, возникла такая проблема делаю игру про казино

import random
import time
import os
balance = 555
def game():
    game = input('Ваша ставка $ --')
    if int(game) > int(balance):
        print('Error')
    game2 = random.randint(0,5)
    game3 = input('Ваше число от 1 до 5 X -- ')
    if game3 == game2:
        print('Вы вииграли X -- ')
        game = int(game) * 2
        balance = int(game) + int(balance)
        print(str(balance))
    else:
        print('Проигрыш :(')
        balance = int(balance) - int(game)
        print(str(balance))


while 1:
    cmd = input('X -- ')
    if cmd == 'casino':
        game()
    elif cmd == 'end':
        break

однако когда я запускаю её то происходит следующая ошибка

Traceback (most recent call last):
  File "e:\VSC\pyvsc\hack.py\hacktest.py", line 25, in <module>
    game()
  File "e:\VSC\pyvsc\hack.py\hacktest.py", line 7, in game
    if int(game) > int(balance):
UnboundLocalError: local variable 'balance' referenced before assignment

переменная balance есть, однако def её не видит


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

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

Переменная balance не входит в область видимости функции game

Если нужно чтобы переменная balance изменялась - внутри функции добавь global balance сделав её глобальной.

import random
import time
import os
balance = 555
def game():
    global balance  # <------
    game = input('Ваша ставка $ --')

. . .
→ Ссылка
Автор решения: Сергей Ш
balance = 555
def game(balance):
    return balance

game(balance)
→ Ссылка