2017-08-29 20 views
-2

這是我第一天學習python。我正在嘗試製作用戶功能。函數傳入一個名爲b的數組。當我編寫代碼而不傳遞數組時,它可以工作。用戶函數和數組

b = [5, 32, 19, 84, 3, 3] 

if len(a) == 5: 
    a4 = a[4] 
else: a4 = 0 

b3 = a[3] 
b2 = a[2] 
b1 = a[1] 
b0 = a[0] 

#Calculation with b0 b1 b2... 

但是,當我試圖做一個功能它沒有。

def PassFunction(b):  
    if len(a) == 5: 
     a4 = a[4] 
    else: a4 = 0 

    b3 = a[3] 
    b2 = a[2] 
    b1 = a[1] 
    b0 = a[0] 

#Calculation with b0 b1 b2... 

,我在使用這個函數的主要功能是:

def main(): 

b = [1,2,3,4] 

number = PassFunction(b) 
print(number) 

我得到的錯誤是:

b3 = a[3] 
NameError: name 'a' is not defined 

更改B3至A3產生了同樣的錯誤:

a3 = a[3] 
NameError: name 'a' is not defined 

添加返回聲明到PassFunction的結尾修復了錯誤。

我知道必須有一個簡單的解決方案,但我找不到它。如果您有任何建議,請讓我知道。

謝謝你的幫助!

+0

_exactly_不起作用?你有錯誤信息嗎?如果是這樣,請將其粘貼到您的帖子中。第一個例子中的「a」是什麼?它是如何定義的? – DyZ

+2

什麼是'a'在這裏? – Antimony

+2

你創建了這個函數,但是沒有你真的在哪裏使用*或者調用這個函數。也許你需要將函數調用爲函數本身的'PassFunction(b)* * outside *。 – davedwards

回答

1

你有b作爲你的函數中的一個參數,但你指的是a(它沒有在該範圍中定義)。
只需在函數的主體中使用b而不是a即可。
哦,我認爲main函數有一些縮進錯誤,可能粘貼了代碼?這main是空的...

0

試試這個:

def PassFunction(a):  
    if len(a) == 5: 
     a4 = a[4] 
    else: a4 = 0 

    b3 = a[3] 
    b2 = a[2] 
    b1 = a[1] 
    b0 = a[0] 

#Calculation with b0 b1 b2... 

您使用了錯誤的參數名稱。取而代之的b使用a

0

這個錯誤意味着你沒有聲明的變量你a4 = a[4]分配之前,所以你必須聲明爲在啓動列表:

a = [w,r,i,t,e, ,y,o,u,r, ,i,t,e,m,s, ,h,e,r,e] 

希望我幫了!