我的代码中的变量不能正确定义

时间:2015-06-02 21:13:08

标签: python debugging variables math pygame

这是我为高中制作的数学课程的代码。我现在正在努力,因为我无法弄清楚我做错了什么,它说y没有被定义。如果有人可以请花时间浏览我的代码并将其整理出来,我将非常感激。

我的错误就在这一行:(第130行)

sum1

如果我需要澄清任何内容,请告诉我。

谢谢!

message_to_screen("What is: " + str(sum1) + " + " + str(sum2),
                          black,
                          -100,
                          "medium")

1 个答案:

答案 0 :(得分:1)

question()函数内部,如果值不等于"easy""medium""hard",则会碰到未定义的sum1变量。由于你没有确切地说出引发异常的行,这将是我最好的选择。

修改

好的,我问你是否知道一些变量范围概念的原因是因为我看到你有一些函数没被调用,并试图访问其范围之外的变量。我强烈建议您进一步阅读有关变量范围的内容,但作为一个直接的答案,您的代码中的以下更改应该对您有用(无法从此处测试):

- 在按钮功能中

if x + width > cur[0] > x and y + height > cur[1] > y:
    pygame.draw.rect(gameDisplay, active_color, (x, y, width, height))
    if click[0] == 1 and value != None:
        if value == "easy":
            easyvalues = list(range(10, 100 + 1))
            sum1 = random.choice(easyvalues)
            sum2 = random.choice(easyvalues)
            gameLoop(sum1, sum2)
        if value == "medium":
            mediumvalues = list(range(100, 1000 + 1))
            sum1 = random.choice(mediumvalues)
            sum2 = random.choice(mediumvalues)
            gameLoop(sum1, sum2)
        if value == "hard":
            hardvalues = list(range(1000, 10000 + 1))
            sum1 = random.choice(hardvalues)
            sum2 = random.choice(hardvalues)
            gameLoop(sum1, sum2)
        else:
            easyvalues = list(range(10, 100 + 1))
            sum1 = random.choice(easyvalues)
            sum2 = random.choice(easyvalues)
            gameLoop(sum1, sum2)

- 在你的gameLoop功能中

def gameLoop(sum1, sum2):

    gameExit = False
    gameOver = False

    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True
            if event.type == pygame.KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    quit()




        gameDisplay.fill(grey)
        answer(sum1, sum2)
        pygame.display.update()

        clock.tick(FPS)

    pygame.quit()
    quit()

- 在您的回答功能中

def answer(sum1, sum2):