如何编写一个函数来计算一个字符在字符串中出现的次数?

时间:2016-10-22 21:46:26

标签: python python-3.x recursion

这是我到目前为止所做的:

def count2(char,text):
    if len(text)==0:
        return 0
    else:
        if char==count2(char,text[:-1]):
            return (1+count2(char,text[:-1]))
        else:
            return False

它只会变为假,但我试图计算“char”等于“text”的每个字符的次数。

5 个答案:

答案 0 :(得分:1)

你的基本情况看起来是正确的。对于递归情况,让我们来看看逻辑。有两种可能的情况:

  1. 如果当前字符串的第一个字符是您要查找的字符。在这种情况下,您应该返回1 +字符串其余部分中字符的计数。
  2. 如果第一个字符不相等,那么您应该只返回字符串其余部分中字符的计数。
  3. 因此该功能变为

    def count2(char,text):
        if len(text)== 0:
            return 0
        count = 1 if text[0] == char else 0
        return count + count2(char, text[1:]) 
    

答案 1 :(得分:1)

Python有一种将True / False视为1/0的简洁方法,因此您可以简单地编写如下内容:

$p1 = "C:\"
$eo = new-object -comobject excel.application; 
$eoc = dir $p1 -Include *.xlsm -Recurse              
Foreach ($f1 in $eoc)
{
   $wb = $eo.workbooks.open($f1.fullname)
   while (!$eo.Ready){sleep 0.1}
   $eo.Application.SendKeys('~')
   while (!$eo.Ready){sleep 0.1}
   $eo.Application.SendKeys('~');
   $eo.Run("macro_name"); 
   $eo.Application.CalculateFull; 
   while (!$eo.Ready){sleep 0.1};
   $wb.save(); $wb.close()
}
$eo.quit()

答案 2 :(得分:1)

 def count2(char, text):
    charCount = 0
    for i in text:
        if i == char:
            charCount += 1
    return(charCount)

这是我对此事的两种感觉,一种不那么复杂的解决方案。

答案 3 :(得分:0)

实现此目标的最佳方法是使用string.count()函数:

>>> 'engineering'.count('e')
3

但我相信这是某些任务的一部分。由于您特定于使用递归函数,下面是实现此目的的示例代码:

def numberofcharacters(my_char, my_string):
    if my_string:
       if my_char == my_string[0]:
            return 1 + numberofcharacters(my_char, my_string[1:])
       else:
            return numberofcharacters(my_char, my_string[1:])
    else:
       return 0

此解决方案可以进一步简化为:

def numberofcharacters(my_char, my_string):
    return ((my_char == my_string[0]) + numberofcharacters(my_char, my_string[1:])) if my_string else 0

示例运行:

>>> numberofcharacters('e','engineering')
3

答案 4 :(得分:0)

使用列表理解可以清楚地表明:

def numberofcharacters(my_char, my_string):
    return len([c for c in my_string if c == my_char])