2017-02-25 162 views
2

我需要定義一個函數T(i),它具有從i = 1到1 = 3的相同值(比如說10),以及i = 4時的不同值(比如說20)。我寫了下面的代碼,Python函數:多個參數

def T(i): 
for i in range(1, 4): 
    y= 10 
    return y 
if i==4: 
    y= 20 
    return y 

for i in range(1, 5): print(i,T(i)) 

從i = 1到1 = 3的值打印正確,但是i = 4的值是錯誤的。好像第二個參數沒有正確分配。請幫忙。

在此先感謝。

+0

的'如果在'for'之後的塊被無法訪問。第一個'return'將控制權移交給調用者。你到底是什麼? –

+0

您的縮進(或缺失)不正確,可能是這個問題。 –

+0

感謝您的回覆ILI,但縮進在原始代碼中是正確的。 – Ashok

回答

1

你需要有特殊情況處理的第一

def T(i): 
    if i < 4: 
    return 10 
    else: 
    return 20 

for i in range(1, 5): print(i,T(i)) 
+0

非常感謝Sarvex,解決了這個問題。 – Ashok

1

沒有必要在功能for循環,當你從一個循環調用T()反正,和return將退出功能,所以if語句無法執行。

更簡單的方法來做到這一點是:

def T(i): 
    return 20 if i==4 else 10 

然而,定義一個函數是沒有必要做到這一點,你可以實現在一個列表理解相同的條件:

[20 if i==4 else 10 for i in range(1,5)]