Python函数TypeError

时间:2017-11-01 15:44:22

标签: python

运行代码时,我需要帮助修复代码错误 错误是

"TypeError: addition() missing 1 required positional argument: 'b'"

我需要开发一个Python程序来显示菜单

一个。计算加法

B中。计算减法

℃。计算分工

d。计算乘法

Q值。退出

请输入您的选择:

•在你的程序中,你需要编写五个函数。

def  menu( ):    
def addition(a, b):      
def subtraction(a, b):    
def division(a, b):      
def multiplication(a, b): 

•根据选择, 将要求两个数字从键盘输入。 执行程序后,将显示结果。

•程序将被终止,直到'Q'被击中。

if choice=="A":
    num1=input("enter 1st number")
    num2=input("enter 2nd number")
    sum=addition("num1+num2")
    print("num1+num2")
if choice=="B":
    num1=input("enter your 1st number")
    num2=input("enter your 2nd number")
    difference=subtraction("num1-num2")
    print("difference")
if choice=="C":
    num1=input("enter your 1st number")
    num2=input("enter your 2nd number")
    quotient=division("num1/num2")
    print("quotient")
if choice=="D":
    num1=input("enter your 1st number")
    num2=input("enter your 2nd number")
    product=multiplication("num1*num2")
    print("product")
if choice=="Q":
    print("quit")`

2 个答案:

答案 0 :(得分:1)

就像错误所说:

"TypeError: addition() missing 1 required positional argument: 'b'"

您提到添加功能的实现是:

def addition(a,b)
    sum = a + b
    return sum

此功能接受两个参数ab。 但是,当您调用此函数时,它只接受一个参数:

sum=addition("num1+num2")

"num1+num2"是一个字符串,它甚至不是变量,因此它被视为一个参数。

我认为你的意思是将变量传递给函数,你应该这样做

sum=addition(num1,num2)

引用中的所有内容都是字符串,不要使用变量。 我打赌你会在其余的函数调用中遇到类似的问题,所以也要相应地改变它们。

答案 1 :(得分:0)

" num1 + num2" 只会产生一个值,该值也是 string 因为你是在""之间写的。 (引号)。 不要这样做除了字符串以外的所有内容。

你的功能需要两个 参数 (a和b),所以你必须输入这两个分开的参数,这样功能才能完成他的工作,这将是实现操作。

你必须这样做:

if choice=="A":
    num1=input("enter 1st number")
    num2=input("enter 2nd number")
    print(addition(num1,num2)) # <-- Pay attention to this line
    # we skipped the variable assignment as the function will return the value by itself.

功能:

def addition(a, b):
    sumV=a+b        # replace sum by sumV or anything else
    return sumV     # as others suggested.

所以,这或多或少是你现在所拥有的。但是,它会提供以下输出

Choice: A
enter 1st number5
enter 2nd number3
53

这是因为您没有指定您为num1和num2分配的输入类型,因此它会像字符串一样威胁它们。 所以,你的函数实际上是连接这些字符串,这就是结果为53而不是8的原因。

为避免这种情况,请更改:

num1=input("enter 1st number")

进入这个:

num1=int(input("enter 1st number"))
# int is specifying you will receive an integer.
# change "int" to "float" if you want to use decimal values.

将其应用于其余代码,它现在应该正常工作:)

更正输出

Choice: A
enter 1st number5
enter 2nd number3
8