0

所以代码的目的是在每次满足 if 语句的要求时增加 count 的值,最后给出一个特定项目在列表中出现的次数,这里是代码

x = ["fizz", "fizz", "fizz"]

def fizz_count(x):
    count = 0
    for fizz in x:
        return count+1

现在我只会得到我 1 ,因为我知道 for 循环在第一个“嘶嘶声”处停止我如何让它继续?(我尝试打印它返回我三个,现在这是一个开始原因,如果我是能够告诉python检查有多少我会得到字符串“fizz”出现的频率:)

谢谢你看这个的人

4

3 回答 3

1

您在第一次迭代时从 for 循环返回,这就是您得到count = 1. 您应该增加countin 循环,并在函数末尾返回它。


但是,您的 for 循环并没有做您想做的事情。它不会fizz在列表中搜索。循环变量fizz将从列表中按顺序获取每个元素,而不仅仅是具有 value 的元素fizz

如果要计算 的总数fizz,则需要添加一个if条件,以测试该值。或者您可以简单地使用带有函数的生成器表达式: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")
于 2013-08-09T01:12:47.253 回答
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
于 2013-08-09T01:12:59.773 回答
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
于 2013-08-09T01:18:47.463 回答