2017-12-05 5 views
0

Pythonのバージョン3.6.3関数とリスト

def count_small(numbers): 
total = 0 
for n in numbers: 
    if n < 10: 
     total = total + 1 
    return total 

lotto = [4, 8, 15, 16, 23, 42] 
small = count_small(lotto) 
print(small) 

ここで私がチェックした後 、それが0の合計で始まる 「count_small(番号)」関数を定義しましたリスト内の各アイテムが10未満であることをチェックし、アイテムが10未満である場合は、合計が1に追加されます。私は 'lotto'が '10' 4 'と' 8 '未満の2つの数字を持っているので、2を返すはずですが、コードを実行すると、代わりに1を返します。

+2

あなたのコード – haifzhan

+1

楽しい事実をインデントしてください:あなたはちょうど '小さな=合計を行うことによって、同じことを達成することができます(ロットでnの場合はn <10) ' –

+0

あなたがリストしたコードである** this ** codeを実行することはできません。それは本当の誤りをあいまいにしているかもしれません。 – usr2564301

答えて

4

returnステートメントはforループ内にあり、最初の番号の後に関数が残されます。あなたはジェネレータ式を使用する場合、あなたは1行でこれを書くことができ

def count_small(numbers): 
    total = 0 
    for n in numbers: 
     if n < 10: 
      total += 1 
    return total 

def count_small(numbers): 
    return sum(n<10 for n in numbers) 
+0

ありがとう!これは多くの助けとなり、簡素化は本当に役立ちます! –

1

インデントが正しくありません。 return文をforループの外側に置きます。

+0

ありがとう!小さな間違い、それは今実行されます:) –

関連する問題