UnBoundLocalError: Локальная переменная, на которую ссылаются перед назначением

Я новичок в Python, и я никогда не изучал какой-либо другой язык программирования. Кажется, я получаю эту ошибку, и я читал другие сообщения, но они говорят, что нужно поставить global перед [dollars = 0], который выдает синтаксическую ошибку, потому что она не позволяет [= 0]. Я использую [доллары] в качестве счетчика, поэтому я могу отслеживать, что я добавляю к нему, и отображать его при необходимости. Может кто-нибудь мне помочь? Благодарю.

<> Code <>

dollars = 0 def sol(): print('Search or Leave?') sol = input() if sol == 'Search': search() if sol == 'Leave': leave() def search(): print('You gain 5 bucks') dollars = dollars + 5 shop() def leave(): shop() def shop(): shop = input() if shop == 'Shortsword': if money < 4: print('I\'m sorry, but you don\'t have enough dollars to buy that item.') shop1() if money > 4: print('Item purchased!') print('You now have ' + dollars + ' dollars.') sol() 

<> Traceback <>

 Traceback (most recent call last): File "C:/Users/justin/Python/Programs I Made/Current/Testing.py", line 29, in <module> sol() File "C:/Users/justin/Python/Programs I Made/Current/Testing.py", line 7, in sol search() File "C:/Users/justin/Python/Programs I Made/Current/Testing.py", line 13, in search dollars = dollars + 5 UnboundLocalError: local variable 'dollars' referenced before assignment 

Вам нужно добавить global dollars , как следует

 def search(): global dollars print('You gain 5 bucks') dollars = dollars + 5 shop() 

Каждый раз, когда вы хотите изменить global переменную внутри функции, вам нужно добавить этот оператор, вы можете просто получить доступ к переменной dollar без global инструкции,

 def shop(): global dollars shop = input("Enter something: ") if shop == 'Shortsword': if dollars < 4: # Were you looking for dollars? print('I\'m sorry, but you don\'t have enough dollars to buy that item.') shop1() if dollars > 4: print('Item purchased!') dollars -= someNumber # Change Number here print('You now have ' + dollars + ' dollars.') 

Вам также нужно уменьшить доллары, когда вы покупаете что-то!

PS – Надеюсь, вы используете Python 3, вместо этого вам нужно будет использовать raw_input .

Вам нужно поставить global dollars , по одной линии самостоятельно, внутри любой функции, где вы меняете стоимость долларов. В коде, который вы указали только в search() , хотя я предполагаю, что вы также захотите сделать это в shop() чтобы вычесть стоимость купленного вами предмета …