分配:
返回字符c
中字符s
的出现次数,
无视案例。使用循环。不要使用内置字符串方法count
,
这做了类似的事情。想法是学习写循环。您
在将s
的字符与c
进行比较时应忽略大小写。
我的尝试:
def countletter(s, c): #BAD
count = 0
for c in s:
if c == c:
count += 1
return count
我是否在正确的轨道上?当我在主...中测试它时,我似乎得到了一些断言错误。
答案 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
我们所做的是生成True
和False
s(True
的生成器,其中字符匹配)。然后,sum()
会向我们提供计数,因为True
在1
为False
,0
为>>> True == 1
True
>>> False == 0
True
:
{{1}}