变量未在函数中定义

Variable is not defined in the function

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

错误在下面这一行中,提示 n1 未定义。

print (str(n1) + " + " + str(n1))

这是您需要解决的问题:

  1. 你的缩进到处都是。
  2. 在给它赋值之前,您曾尝试使用 counter 作为循环条件的一部分。
  3. 因为您在 while 循环体内创建了 n1n2,每次猜测后 n1n2 将再次创建并分配不同的值.我不确定您是否希望发生这种情况,但如果您这样做了,您只需将这两行移回循环内即可。
  4. 如果用户猜对了答案,你就没有正确地跳出循环。这就是我添加 break 的原因。这将在成功回答后结束循环。此外,如果答案不正确,则不需要 pass。循环将继续,直到收到正确答案或达到 counter.
  5. 的值为止

无论如何,这是您的代码的 fixed/working 版本。

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) 调用了函数。