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