函数中未定义变量

时间:2016-09-04 03:17:27

标签: python variables scope definition

tableHandler

错误在下面的这一行告诉n1未定义。

import random

def game(n):
        while counter < n:  
        n1 = random.randrange(1,10)
        n2 = random.randrange(1,10) 
        counter = 0     
        print (str(n1) + " + " + str(n1))
        answer = input("Enter answer: ")
if answer == n1+n2:
    print("Correct.")
else:
    print("Incorrect.")
    counter += 1
    pass

1 个答案:

答案 0 :(得分:0)

以下是您需要解决的问题:

  1. 你的缩进遍布各处。
  2. 您尝试在循环中使用counter作为条件的一部分,然后再给它一个值。
  3. 由于您在while循环体内创建了n1n2,因此每次猜测n1n2将再次创建并分配不同的值。我不确定你是否希望这种情况发生,但如果你这样做,你可以简单地将这两条线移回循环内。
  4. 如果用户猜到了正确的答案,那么你没有正确地突破你的循环。这就是我添加break的原因。这将在成功回答后结束循环。此外,如果答案不正确,您也不需要pass。循环将继续,直到收到正确的答案或达到counter的值。
  5. 无论如何,这是您的代码的固定/工作版本。

    import random
    
    def game(n):
        counter = 0
        n1 = random.randrange(1,10)
        n2 = random.randrange(1,10) 
        while counter < n:
            # move creation of n1, n2 here if you want #'s to change after every guess  
            print ('{} + {}'.format(n1, n2))
            answer = input("Enter answer: ")
            if answer == int(n1 + n2):
                print("Correct.")
                break
            else:
                print("Incorrect.")
                counter += 1
    

    您应该阅读一些基本的Python主题,例如缩进,while循环和变量。

    希望这有帮助!

    最后,这里有2个测试。其中一个我成功地猜到了正确的答案而另一个我猜到了计数器到达之前。

    4 + 9
    Enter answer: 3
    Incorrect.
    4 + 9
    Enter answer: 2
    Incorrect.
    4 + 9
    Enter answer: 1
    Incorrect.
    
    
    9 + 8
    Enter answer: 17
    Correct.
    

    在这两个例子中,我用game(3)调用了函数。