与缺少必需的位置参数

问题描述:

def computeValue(condition , gps , wifi , camera): 
    int(val1=0) 
    int(val2=0) 

    val1 = (condition + gps + wifi + camera) 
    val2 = (condition + gps + wifi + camera) 
    return val1 
    return val2 

def main(): 

    w=0; 
    x=0; 
    y=0; 
    z=0; 
    q=0; 
    r=0; 
    s=0; 
    t=0; 
# it then has conditions to assign values to wxyzqrst, and then 

    val1 = computeValue(w+x+y+z) 
    val2 = computeValue(q+r+s+t) 
main() 

error: TypeError: computeValue() missing 3 required positional arguments: 'gps', 'wifi', and 'camera'与缺少必需的位置参数

任何援助有任何想法,以什么即时做错了什么?

+3

您是否尝试传递4个参数? –

+0

4个参数?哪里?对不起,在这个 –

+2

完成noob'w + x + y + z'是一个参数。你还需要3个。 –

余;

wwii,是正确的 - 一个教程会为你提供很好的服务,因为这是编程的基础,所以如果你不花时间学习基础知识,你将会有漫长的旅行之路。

但是,一般来说,想象一个函数(在你的情况下是computeValue),作为一个数学算法。想象一下,它是计算矩形的面积。你会说Area = F(x,y)= x * y。由此可以说F(1,2)= 2,F(2,2)= 4,F(4,3)= 12等等。但是你不能说F(3 * 4) - 这是没有意义的,因为它意味着与F(12)相同。你的算法定义需要两个参数,而不是一个。

现在 - 扩展到您的computeValue函数。您将其定义为需要4个参数(又名参数)。但是,您正尝试使用“w + x + y + z”来调用它。在调用函数之前,Python会非常聪明地添加这些值。就像上面的F(12)一样,你只给出一个参数(或参数)。您需要用逗号分隔的值,如computeValue(w,x,y,z)

这就是问题#1。你的下一个问题是你不能从函数中返回两次(val1和val2)。你可以从一个函数返回一个列表,数组,元组等,并使用每个部分,但我认为这会使事情复杂化,超出了你现在准备好的东西。现在,如果你想要两个不同的计算,只需要两个函数。