[UnboundLocalError in the same function-Python

问题描述 投票:-1回答:2

[这段python中的代码正在输出错误“ UnboundLocalError:分配前引用的本地变量'accelY'。但是已经在同一功能中分配了accelY。有人知道为什么会这样吗?

    while True:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    accelY = -2

        y += accelY
python python-3.x pygame
2个回答
0
投票

accelY并非必要在函数的前面设置;如果没有event具有指定的类型和键,则不会。


0
投票

在开始时,按SPACE之前,代码的工作方式类似于

while True:

    y += accelY

所以它尝试使用尚不存在的accelY

最好在开始时设置默认值

accelY = 0

while True:

    # rest of code

    y += accelY

BTW:但是还会有其他问题。当您停止按SPACE时,accelY仍为2,因此应在事件0中设置值KEYUP

accelY = 0

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                accelY = -2

        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_SPACE:
                accelY = 0

    y += accelY
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.