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
有什么办法可以解决这个问题吗?
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()