ここにはいくつかの問題があります。
- を反復しようとしています
fizz_count。しかしfizz_count、あなたの機能です。x渡された引数です。そうあるべきですfor x in x:(ただし、#3を参照)。
- で 1 つの引数を受け入れています
*x。すべての引数のタプルである*原因。リストを 1 つだけ渡す場合、リストはであり、リストの項目は などです。受け入れるほうが簡単です。xx[0]x[0][0]x[0][1]x
xリストを反復処理するときに、リスト内のアイテムのプレースホルダーとして引数を使用しています。つまり、ループの後x、渡されたリストではなく、最後のアイテムを参照します。xこの場合、後で使用しないため、これは実際に機能しますが、明確にするために、別の変数名を使用することをお勧めします。
- 変数名の一部は、より説明的である可能性があります。
これらをまとめると、次のようになります。
def fizz_count(sequence):
count = 0
for item in sequence:
if item == "fizz":
count += 1
return count
そんなに速く泳げないネズミイルカを学ぶために、あなたは長い道のりを歩んでいると思います。これを書くためのより良い方法は次のとおりです。
def fizz_count(sequence):
return sum(item == "fizz" for item in sequence)
しかし、実際listにはcount()と同様にメソッドがtupleあるため、引数がリストまたはタプル (および他の種類のシーケンスではない) であることが確実にわかっている場合は、次のようにすることができます。
def fizz_count(sequence):
return sequence.count("fizz")
実際、これはとても簡単なので、関数を書く必要はほとんどありません!