import random
points1=0
points2=0
bank1=0
bank2=0
def gameloop():
cont = "Keep going"
while cont=="Keep going":
roll1=random.randint(1,6)
roll2=random.randint(1,6)
if roll1+roll2==2:
bank1=0
points1=0
print("Unlucky! You've lost your banked and running total! Now it's the next player's turn.")
else:
points1=points1+roll1+roll2
#This is the first place I keep getting the problem.
所以,我试图尽可能缩短我的代码,以便它包含所有必要的部分。据我所知,我可以将其格式化为有意义。另外,我无法删除“def gameloop():”因为我以后需要它。这里的问题是,我一直收到UnboundLocalError,我已经尝试过调查,但我不确切知道如何应用解决方案。任何帮助将不胜感激 - 所以提前感谢!
答案 0 :(得分:1)
您正在尝试修改points1
中的gameloop
和其他变量,但它们的定义超出了gameloop
函数的范围。将它们作为参数包含在内,然后返回它们的新值。
points1=0
points2=0
bank1=0
bank2=0
def gameloop(p1, p2, b1, b2):
cont = "Keep going"
while cont=="Keep going":
roll1=random.randint(1,6)
roll2=random.randint(1,6)
if roll1+roll2==2:
b1=0
p1=0
print("Unlucky! You've lost your banked and running total! Now it's the next player's turn.")
else:
p1=p1+roll1+roll2
return p1, p2, b1, b2
然后当你调用这个函数时,它会给你那些计算出来的新值,而不是试图对不在其范围内的变量进行操作。
points1, points2, bank1, bank2 = gameloop(points1, points2, bank1, bank2)
答案 1 :(得分:0)
那是因为你的变量
points1=0
points2=0
bank1=0
bank2=0
超出了函数gameloop()
的范围,因此在函数内部无法识别它们。
您需要将它们作为参数传递给函数,如下所示:gameloop(points1, points2, bank1, bank2)
或者在函数的开头初始化它们:
def gameloop():
points1=0
points2=0
bank1=0
bank2=0
答案 2 :(得分:0)
您仍然可以使用print myjson["searchInformation"]["totalResults"]
关键字使函数内变量编辑全局变量。那就是:
global