需要在Python中编辑代码的帮助吗

2024-05-28 19:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近才开始用python编程。这是我在编程方面的第一次经验。在

这是来自code academy的问题。我基本上需要:

"Write a function called fizz_count that takes a list x as input and returns the count of the string "fizz" in that list.

For example, fizz_count(["fizz","buzz","fizz"]) should return 2. "

这是我的代码:

def fizz_count(x): 
    count = 0
    for a in x:
        if a == "fizz":
           return fizz_count(x) == 1 + count
        else:
           return fizz_count(x) == count

但这行不通。我哪里错了?在


Tags: theinreturnthat编程countcodefunction
1条回答
网友
1楼 · 发布于 2024-05-28 19:30:35

您似乎在使用递归编程,但您不了解该如何工作。在

您正在递归地调用函数,但递归计数要求您将问题划分为子问题;解决一个问题并将其余问题委托给递归调用,或者将集合拆分为子问题,直到您有一个知道如何解决的小集合。但是,您将尝试解决列表中所有元素的子问题,然后将整个列表传递给递归调用。这只会导致无限递归异常,因为您只查看同一个问题集。在

递归版本为:

def fizz_count(x):
    if not x:
        return 0
    return (1 if x[0] == 'fizz' else 0) + fizz_count(x[1:])

这只查看第一个元素,并将列表其余部分的计数委托给递归调用。如果列表为空,则返回0。在

将列表分成两半是另一个选项,仅当列表为空或只有一个元素时返回:

^{pr2}$

如果您想在列表上循环并以这种方式计数(不使用递归),请递增count,并且只在完成循环时返回:

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

然而,最简单的解决方案是使用标准的list.count()函数:

^{4}$

就这样结束吧。在

相关问题 更多 >

    热门问题