所以我有一些代码应该可以解决数学问题。在我的完整代码中,我有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
答案 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