这是我到目前为止所做的:
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”的每个字符的次数。
答案 0 :(得分:1)
你的基本情况看起来是正确的。对于递归情况,让我们来看看逻辑。有两种可能的情况:
因此该功能变为
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])