Python变量未在数学求解器程序中定义的错误

时间:2018-07-06 02:14:52

标签: python python-3.x variables

所以我有一些代码应该可以解决数学问题。在我的完整代码中,我有20个问题,但这里仅包含4个问题作为示例。它也有一个点跟踪器,但是有一个问题。每当我尝试回答时,如果它告诉我是对还是错,它都会发送错误。

代码:

from time import sleep
print('Math Solver\n')
print('You will be solving a series of math problems.')
def start():
    points = 0
    print('LET\'S BEGIN!')
def correct():
    print('Correct')
    points = points + 1
    sleep(2)
def wrong():
    print('Wrong')
    points = points - 1
    sleep(2)
start()
q1 = input("6+2?")
if q1 == "8":
    correct()
else:
    wrong()

q2 = input("10x3?")
if q2 == "30":
    correct()
else:
    wrong()

q3 = input("24-17?")
if q1 == "7":
    correct()
else:
    wrong()

q4 = input("54/6?")
if q1 == "9":
    correct()
else:
    wrong()

print('Game Over')
print('Your score was: ' + points)

错误:

Traceback (most recent call last):
  File "/home/pi/Documents/script.py", line 18, in <module>
    correct()
  File "/home/pi/Documents/script.py", line 9, in correct
    points = points + 1
UnboundLocalError: local variable 'points' referenced before assignment

1 个答案:

答案 0 :(得分:1)

您要在本地范围内声明点变量:

def func1(): 
    points = 0
def func2():
    print(points) 
func1()
func2()  #error

局部作用域意味着该变量仅存在于您定义的函数def name()中,而其他函数都不知道。因此,当您尝试从另一个函数调用该变量时,会出现错误。 为了使所有代码都可以访问points变量,需要在全局范围内声明它(外部和def func()调用)。然后,您可以通过调用points在函数中使用此变量global points

points = 0

def func1():
    global points
    print(points) # 0
    points = 1
    print(points) # 1

def func2():
    global points
    print(points) # 1

func1() #prints 0 then 1
func2() #prints 1