这里有一些问题:
- 您正在尝试迭代
fizz_count. 但是fizz_count是你的功能。x是您传入的参数。所以它应该是for x in x:(但见#3)。
- 您正在接受一个参数
*x。成为所有参数的元组的原因*。如果你只传递一个,一个列表,那么列表是,列表的项目是,依此类推。更容易接受。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")
事实上,这很简单,你几乎不需要为它写一个函数!