NameError:名称“num”未定义

问题描述 投票:0回答:1
def multiply(num):
    (num1 * num2)
    num1 = random.randint(1,12)
    num2 = random.randint(1,12) 
    if maths == "Multiplication" or "m" or "x": 
        ans = int(input("What is the answer to " + str(num1) + " x " + str(num2) + " ? "))
    if ans == multiply(num1, num2):
        print("You are correct! ")
    else:
        print("Wrong, please try again. ")
    return num1 * num2

name = input("What is your name? ")
maths = input("What mathematics would you like to learn, " + name + "? ")
if maths == "Multiplication" or "m" or "x":
    multiply(num)

这行代码不断出现此错误,我不知道为什么:

Traceback (most recent call last):
  File "program.py", line 15, in <module>
    multiply(num) 
NameError: name 'num' is not defined

有什么办法可以解决这个问题吗?

python nameerror
1个回答
3
投票

num
实际上并未在
multiply()
中使用,因此没有理由将其传入。相反,在不带参数的情况下声明
multiply()

def multiply():
    '''(num1 * num2)'''
    .
    .

并从

__main__
调用它,如下所示:

if maths == "Multiplication" or "m" or "x":
    multiply()

multiply()
中检查它是否应该像这一行那样执行乘法似乎没有意义:

if maths == "Multiplication" or "m" or "x":

并且您尝试递归调用

multiply()
,这将失败:

if ans == multiply(num1, num2):

...只需使用

*
运算符即可。

最后,为什么要返回乘法的结果呢?如果在函数之外不知道被乘数,那么乘积有什么用呢?返回用户是否得到正确答案可能会更好。


将以上所有内容放在一起,您会得到:

multiply()

© www.soinside.com 2019 - 2024. All rights reserved.