2017-06-11 17 views
0

私はPythonでエラーを取り除こうとしていますが、これまで試みてきたすべてのメソッドは機能しませんでした。どんな助けでも大歓迎です。UnboundLocalError:割り当て前にローカル変数 'money'が参照されています

コード:

from sense_hat import SenseHat 
import random 
from guizero import App, PushButton,Text 
import time 
import pygame.mixer 
from pygame.mixer import Sound 
pygame.mixer.init() 
sense = SenseHat() 
app = App(title="Fruity Fruit Machine", bgcolor="yellow") 
mario = Sound("SuperMarioBros.ogg") 
money = 30.00 
casino = 100.00 
global money 
global casino 
def machine(): 
    sense.clear(0,0,0) 
    images = ["apple.png", "orange.png", "lemon.png"] 
    fruit = [] 
    money = money - 1.00 
    for i in range(3): 
      img = random.choice(images) 
      fruit.append(img) 
      sense.load_image(img) 
      time.sleep(3) 
      sense.clear(0,0,0) 
    if all_same(fruit) == True: 
      sense.show_message("You won £20!") 
      casino = casino - 20.00 
      money = money + 20.00 
      display_casino() 
      dispaly_money() 
      dc = "Casino money: " + casino 
      cm.set(dc) 
      md = "Your money: " + money 
      m.set(md) 
    else: 
      sense.show_message("You got 30p!") 
      money = money + 00.30 
      casino = casino + 00.70 
      display_casino() 
      display_money() 
      dc = "Casino money: " + casino 
      cm.set(dc) 
      md = "Your money: " + money 
      m.set(md) 

def play_mario(): 
    mario.play() 
def all_same(items): 
    return all(x == items[0] for x in items) 


button = PushButton(app, command=machine, text="SPIN") 
button2 = PushButton(app, command=play_mario, text="Play Music") 
cm = Text(app, text="",align="left") 
m = Text(app, text="",align="right") 

エラーは次のとおりです。UnboundLocalError:割り当て前に参照のローカル変数 'お金'。 Pythonはまた時々、構文警告を思い付く:SyntaxWarning:名「カジノは」あなたはmachineglobal moneyglobal casinoを配置する必要があり

+2

'はGlobal'宣言は感覚外の機能がありません。 – ForceBru

+0

@ juanpa.arrivillagaああ、はい。 –

答えて

0

を見てみましょう理由については:

from sense_hat import SenseHat 
import random 
from guizero import App, PushButton,Text 
import time 
import pygame.mixer 
from pygame.mixer import Sound 
pygame.mixer.init() 
sense = SenseHat() 
app = App(title="Fruity Fruit Machine", bgcolor="yellow") 
mario = Sound("SuperMarioBros.ogg") 
money = 30.00 
casino = 100.00 
def machine(): 
    global money 
    global casino 
    sense.clear(0,0,0) 
    images = ["apple.png", "orange.png", "lemon.png"] 
    fruit = [] 
    money = money - 1.00 
    for i in range(3): 
     img = random.choice(images) 
     fruit.append(img) 
     sense.load_image(img) 
     time.sleep(3) 
     sense.clear(0,0,0) 
    if all_same(fruit) == True: 
     sense.show_message("You won £20!") 
     casino = casino - 20.00 
     money = money + 20.00 
     display_casino() 
     dispaly_money() 
     dc = "Casino money: " + casino 
     cm.set(dc) 
     md = "Your money: " + money 
     m.set(md) 
    else: 
     sense.show_message("You got 30p!") 
     money = money + 00.30 
0

グローバル宣言の前に割り当てられています。それを関数の外に置くことは何もしません。 、あなたの関数内でグローバル宣言を移動してみてくださいthis answer.