2017-06-28 10 views
-3

はここで、私のコード私は結果があるべき機能なぜ私は関数内のforループを動作させることができないのですか?

>>> a=[5,3,5,6,8,9,0,1,3] 
>>> def classification(input): 
     scoreget=0 
     for i in range(0,8): 
      if input[i]>2: 
       scoreget+=1 
      else: 
       scoreget+=0 
      return scoreget 
>>> result=classification(a) 
>>> print result 

[1,1,1,1,1,1,0,0に「forループを」置くことができない理由を私は疑問に思って です1]の値を示していたが、1ではなく1であった。

+1

あなたがforループの最初の反復の後に戻っている:以下は働くだろうあなたのコードの例です。 – glibdud

+2

'return'は' for'の外になければなりません。プラス 'scoreget'は整数でないリストにする必要があります。そうでない場合は7を返します – Nuageux

+0

' return scoreget'の前にタブスペースを1つ削除します –

答えて

0

Pythonでの関数の働きは、最初にforループ全体が終了し、次に関数の出力が返されます。この場合、最後の出力だけが返されます。また、範囲がすべての入力パラメータをカバーしているわけではありません。これはlenを使用して解決できます。

a = [5, 3, 5, 6, 8, 9, 0, 1, 3] 
def classification(inputs): 
    scoreget = 0 
    score = [] 
    for i in range(len(inputs)): 
     if inputs[i] > 2: 
      scoreget = 1 
     else: 
      scoreget = 0 
     score.append(scoreget) 
    return score 

    result = classification(a) 

印刷結果

+0

ありがとう、あなたの提案は私のために非常に役立ちます。 –

関連する問題