在字符串中递归计数2个(或更多)字符;在Python中以(x,y)格式返回

时间:2016-06-07 17:48:58

标签: string python-3.x recursion count

我编写了一个程序,用于计算在调用函数时输入的字符串中有多少' '个单位空格或h个字符:

def chars(s):
    if not s:
        return 0
    else:
        return (s[0] == 'h') + chars(s[1:])

致电chars('hello how are you here')

您将获得3

现在,我们要说eh一起计算。 h将返回3e应返回4。输出为(3,4)

我尝试了def chars(s, j=0)并设置了一个计数器,但后来意识到,坚持,这与此处的任何事都没有关系,认为它毫无意义。我想,我该如何定义第二个变量是什么?因为我只想要1个字符串作为输入。

我完全迷失了如何包含第二个变量。

另外,只是将它扔出去,我会遵循与2个字符相同的规则来获得更多字符吗?或者会有不同的方式吗?

1 个答案:

答案 0 :(得分:1)

这就是你想要的:

def count(s):
    if not s:
        return (0, 0)
    else:
        next_count = count(s[1:])
        return ((s[0] == 'h') + next_count[0],
                (s[0] == 'e') + next_count[1])

count("hello how are you here") # => (3, 4)

基本案例返回元组(0, 0),递归步骤查看下一个计数的两个值,并在必要时添加一个。

如果你想要超过2个字符,只需使元组更大(可能使用循环)。