所以基本上我不知道这段小代码有什么问题,似乎我找不到让它工作的方法。
points = 0
def test():
addpoint = raw_input ("type ""add"" to add a point")
if addpoint == "add":
points = points + 1
else:
print "asd"
return;
test()
我得到的错误是:
UnboundLocalError: local variable 'points' referenced before assignment
注意:我不能在函数中放置“points = 0”,因为我会重复多次,所以它总是先将点设置回0。 我完全陷入困境,任何帮助都会受到赞赏!
答案 0 :(得分:16)
points
不在函数范围内。您可以使用nonlocal:
points = 0
def test():
nonlocal points
points += 1
如果points
内的test()
应引用最外层(模块)范围,请使用global:
points = 0
def test():
global points
points += 1
答案 1 :(得分:4)
你也可以将点传递给函数: 小例子:
def test(points):
addpoint = raw_input ("type ""add"" to add a point")
if addpoint == "add":
points = points + 1
else:
print "asd"
return points;
if __name__ == '__main__':
points = 0
for i in range(10):
points = test(points)
print points
答案 2 :(得分:0)
将点移动到测试中:
def test():
points = 0
addpoint = raw_input ("type ""add"" to add a point")
...
或使用global statement,但这是不好的做法。 但更好的方法是将点移动到参数:
def test(points=0):
addpoint = raw_input ("type ""add"" to add a point")
...