2013-07-10 3 views
-2

파이썬으로 만든 수학 게임을 끝내 겠지만 "num 1 & num2가 정의되어 있지 않습니다.이 코드는 파이썬 과정의 마지막 부분이며이 점이 저를 방해하고 있습니다. 그것을 끝내기에서 내가 할 수있는 모든 도움에 대해 매우 감사하고있다. 숫자는 계시 함수에서 결정되는 int이며, 계시 함수에서는 옳고 그름을 나타내는 메시지를 토대로 하나의 시도를 추가한다. 문제는 모든 그들은 내가 계산한다이 문제를 해결하는 것이 중요하지 않기 때문에 곱셈이. 나는 위젯을 삭제 한 메인-기능 이외의 일이다.파이썬 게임이 실행되지 않습니다

from Tkinter import * 
import random 
number = num1 * num2 
num1= random.randint(1, 15) 
global num1 
num2 = random.randint(1, 15) 
global num2 
forsok = 0 
class Application(Frame): 

def quit(self): 
    global root 
    root.destroy() 

def reset(self): 
    self.name_ent.delete(0, END) 
    self.gissa_ent.delete(0, END) 
    self.display1_txt.delete(1.0,END) 
    self.display2_txt.delete(1.0,END) 
    self.display3_txt.delete(1.0,END) 
    self.display4_txt.delete(1.0,END) 


def reveal(self): 
    global forsok 
    name = self.name_ent.get() 
    gissa = self.gissa_ent.get() 
    if int(gissa) != int(number): 
     result_msg = "Tyvärr det är fel!!" 
     forsok += 1 
    if int(gissa) == int(number): 
     result_msg = "Du gissade rätt!!Grattis du vann!" 
     forsok += 1 
    welcome_msg = "Välkommen " + name 
    gissa_msg = " Du svarade på: " + gissa 
    forsok_msg = "Du har svarat " + str(forsok) + "gånger." 
    if forsok > 3: 
     welcome_msg = "Game OVER!!." 
     gissa_msg = "Du har gissat för många gånger mohahaha." 
     result_msg = " " 
     forsok_msg = " " 
    # Display visar de olika meddelanadena 
    self.display1_txt.delete(0.0, END) 
    self.display1_txt.insert(0.0, welcome_msg) 
    self.display2_txt.delete(0.0, END) 
    self.display2_txt.insert(0.0, gissa_msg) 
    self.display3_txt.delete(0.0, END) 
    self.display3_txt.insert(0.0, result_msg) 
    self.display4_txt.delete(0.0, END) 
    self.display4_txt.insert(0.0, forsok_msg) 


    # Main hanteraren rootar och bestämmer storleken på fönstret 
root = Tk() 
root.title("Gissa Multiplikationen") 
root.geometry("700x450") 
app = Application(root) 
root.mainloop() 
root = Tk() 
quit_bttn(root) 
Application(root) 
root.mainloop() 

오류 메시지가

다음입니다
number = num1 * num2 
NameError: global name 'num1' is not defined 
+0

'글로벌'사용법을 오해 할 수도 있습니다. – zhangyangyu

답변

2

글쎄,이 오류는 모두 설명합니다. 3 번 줄에서 num1과 num2를 사용하고 있지만 나중에 정의됩니다.

+0

고마워요! 문제가 해결되었습니다. – SterlinkArcher

1

라인 순서가 잘못되어 프로그램에 무엇이 있는지 알려주기 전에 num1과 num2를 사용하려고합니다. 시도 :

from Tkinter import * 
import random 
global num1 
num1= random.randint(1, 15) 
global num2 
num2 = random.randint(1, 15) 
number = num1 * num2 
forsok = 0 
class Application(Frame): 
+0

감사합니다! 그 문제를 해결, 그것은 아주 간단한 일 이었어 – SterlinkArcher

관련 문제