所以代码的目的是在每次满足if语句的要求时增加count的值,最后它给出了一个特定项在列表中出现的次数,这里是代码< / p>
x = ["fizz", "fizz", "fizz"]
def fizz_count(x):
count = 0
for fizz in x:
return count+1
现在我只会给我一个,因为我知道for循环在第一个“fizz”停止了 我该怎么做?(我试过打印它给我三个一个,现在这是一个开始的原因如果我能告诉python检查有多少我会得到字符串“fizz”的频率出现了:))
感谢任何看过这个的人
答案 0 :(得分:1)
您在第一次迭代时从for循环返回,这就是您获得count = 1
的原因。您应该在循环中递增count
,并在函数末尾返回它。
但是,你的for循环并没有按你想要的那样做。它不会在列表中搜索fizz
。循环变量fizz
将从列表中按顺序获取每个元素,而不仅仅是值为fizz
的元素。
如果要计算fizz
的总数,则需要添加if
条件来测试值。或者您只需使用generator expression,sum()
函数:
def fizz_count(x):
return sum(1 for item in x if item == "fizz")
或者,甚至更简单,使用list.count(item)
方法:
def fizz_count(x):
return x.count("fizz")
答案 1 :(得分:0)
这里的问题是return
语句将退出该函数,因此您只会循环一次,并始终返回count + 1
,即0 + 1 = 1
。
您可以通过不返回count+1
来修复此问题,而是返回总数:
def fizz_count(x):
count = 0
for fizz in x:
count = count+1
return count
要获取所显示的特定项目的次数,您可以使用if
声明:
def fizz_count(x, item):
count = 0
for fizz in x:
if fizz == item:
count = count+1
return count
答案 2 :(得分:0)
你也可以用lambda:
来做x = ["fizz", "fizz", "fizz"]
fizz_count = lambda s: sum(1 for match in x if match is s)
print fizz_count("fizz")
# Output: 3