2017-02-25 14 views
2

i = 1から1 = 3まで同じ値(例えば10)、i = 4で異なる値(例えば20)を持つ関数T(i)を定義する必要があります。Python関数:multiple arguments

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の値は間違っています。第2引数が正しく割り当てられていないようです。助けてください。

ありがとうございます。

+0

'もし 'for'の後のifブロックに到達できない場合に起こります。最初の 'return'は呼び出し元に制御権を渡します。あなたは何を正確にしていますか? –

+0

あなたのインデント(または不足)が間違っています、多分それは問題です。 –

+0

返信ILIをありがとうが、インデントは元のコードで正しいです。 – Ashok

答えて

1

あなたは特別なケースが扱われている必要があり最初

とにかくループから T()を呼び出し、 return機能を終了しますので、として機能で forループの必要はありませんが、
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

ifステートメントを実行できません。

これを行うための簡単な方法は次のとおりです。

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

しかし、関数を定義すると、これを達成するために必要はありません、あなたはリスト内包で同じ状態を実現することができます。

[20 if i==4 else 10 for i in range(1,5)] 
関連する問題