Python 为什么在while循环中将变量设置为false会导致错误,而不是停止循环
我正在创建我的第一个Python游戏,我尝试了暂停/取消暂停游戏功能。我创建了一个全局Python 为什么在while循环中将变量设置为false会导致错误,而不是停止循环,python,python-3.x,Python,Python 3.x,我正在创建我的第一个Python游戏,我尝试了暂停/取消暂停游戏功能。我创建了一个全局pause变量,通过声明将其设置为false。但当我按下分配给暂停功能的按钮时,程序会显示以下错误: 赋值前引用的局部变量“暂停” 下面是按钮的paused()功能分配: if event.key == pygame.K_p: pause = True paused() 下面是我的paused()函数: def paused(): while pause: fo
pause
变量,通过声明将其设置为false
。但当我按下分配给暂停功能的按钮时,程序会显示以下错误:
赋值前引用的局部变量“暂停”
下面是按钮的paused()
功能分配:
if event.key == pygame.K_p:
pause = True
paused()
下面是我的paused()
函数:
def paused():
while pause:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_m:
pause = False
pygame.display.update()
clock.tick(15)
#gameDisplay.fill(white) `
pause
是main的局部变量,因此有必要将其发送到函数。此外,还有一些识别错误。以下是固定版本:
if event.key == pygame.K_p:
pause = True
paused(pause)
def paused(pause):
while pause:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_m:
pause = False
pygame.display.update()
clock.tick(15)
#gameDisplay.fill(white) `
缩进很重要。您的已关闭。您需要阅读有关作用域的内容-您的局部变量在其他函数中不为人所知。为什么不说
,而说True:
我通常找不到一个很好的理由来卷积布尔值,因为您不喜欢它的名称。函数paused()
应该足以指示正在发生的事情,从而不会将布尔值分配给变量。您可以将pause
变量传递给paused
函数,否则必须在paused
中声明全局暂停