Python程序如何计算字母c出现的次数

时间:2012-10-27 18:54:36

标签: python count char

分配:

返回字符c中字符s的出现次数, 无视案例。使用循环。不要使用内置字符串方法count, 这做了类似的事情。想法是学习写循环。您 在将s的字符与c进行比较时应忽略大小写。

我的尝试:

 def countletter(s, c): #BAD
     count = 0
     for c in s:
        if c == c:
        count += 1
        return count

我是否在正确的轨道上?当我在主...中测试它时,我似乎得到了一些断言错误。

5 个答案:

答案 0 :(得分:2)

您的return位置错误。所以你的函数实际上只在一次迭代后返回。

此外,你不应该在for循环中使用变量名c,使用一些不同的变量,因为它替换了函数调用中收到的c的值,而当前字符由{ {1}}。

for-loop

答案 1 :(得分:2)

除了上面的答案,Python中还有一个内置的方法计数。如果这个功能不是作业等,你可以在你的项目中使用它。(哦,我现在看到,这是一个功课。但是附加信息是无害的。:))

"baris".count("b")

返回1

答案 2 :(得分:0)

如果你比较c定义的变量for c in s:,你总会得到真的。因此,您的比较应该看起来像c == 'c'(您可以弄清楚如何进行不区分大小写的检查)并且您的返回错误地缩进

答案 3 :(得分:0)

return语句的位置错误。删除四个空格(或您使用的标签)

答案 4 :(得分:0)

正如在内置count()方法之外执行此操作的方法的另一个示例,可以使用生成器表达式和内置sum()

>>> def countletter(s, c):
...     return sum(x.lower() == c.lower() for x in s)
... 
>>> countletter("abcdefFf", "F")
3
>>> countletter("a", "A")
1

我们所做的是生成TrueFalse s(True的生成器,其中字符匹配)。然后,sum()会向我们提供计数,因为True1False0>>> True == 1 True >>> False == 0 True

{{1}}