我正在尝试制作游戏,但遇到了我无法弄清的障碍。这是我无法理解的代码部分
from random import randint
apple = (0, 0)
def placeApple():
apple = (randint(0, 19), randint(0, 19))
fillCell(apple[0] * 20, apple[1] * 20, appleColor)
print(apple)
我觉得这应该将apple更改为一个随机整数0到19的点,但是当我在控制台中调用print(apple)时,我总是得到(0,0)
答案 0 :(得分:1)
是的,您可以声明global apple
(不推荐):
def placeApple():
global apple
apple = (randint(0, 19), randint(0, 19))
fillCell(apple[0] * 20, apple[1] * 20, appleColor)
或return
:
def placeApple():
apple = (randint(0, 19), randint(0, 19))
fillCell(apple[0] * 20, apple[1] * 20, appleColor)
return apple
但是对于这两种方法,您实际上都必须调用该函数,例如return
选项:
apple = placeApple()
print(apple)
答案 1 :(得分:1)
您面临的问题是,您有一个名为apple
的全局变量,并且在函数内部有一个也称为apple
的局部变量。如果要在函数内部修改全局变量,则应使用global
:
def placeApple():
global apple
apple = (randint(0, 19), randint(0, 19))
fillCell(apple[0] * 20, apple[1] * 20, appleColor)
placeApple()
print(apple)
但是,在函数内部更改全局变量是非常不好的做法,因为在您必须调试时,这可能会使您头疼。使用这种方法,每次您调用apple
时,placeApple
都会更新。