2015-09-28 98 views
-1
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個。 –

回答

0

餘;

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)。你可以從一個函數返回一個列表,數組,元組等,並使用每個部分,但我認爲這會使事情複雜化,超出了你現在準備好的東西。現在,如果你想要兩個不同的計算,只需要兩個函數。

相關問題