You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计字符串中'bob'出现次数的代码逻辑错误排查

问题排查与修复

你的代码出现计数虚高的问题,核心原因是循环次数超出实际需要,导致同一组字符被重复统计,咱们一步步拆解:

问题根源

你用for var in s来循环,这会让循环执行len(s)次——但统计连续三个字符的序列,实际只需要检查len(s)-2组(比如长度为5的字符串,只有0-2、1-3、2-4这3组,也就是5-2=3次循环)。

当代码运行到c等于len(s)-1(最后一个字符的索引)时,c < len(s)-1的判断不成立,a、b、c就不再往后移动。但循环还会继续执行剩下的次数,每次都会重复检查最后一组三个字符:如果这组刚好是bob,就会每次给count加1,直接导致统计结果虚高。

比如你提到的nqsbobobdbtobob,最后三个字符就是bob,代码在c到达最后位置后,还会多循环2次,这两次都会重复统计最后一组bob,所以结果比实际多了2次,和你遇到的情况完全吻合。

修复方案

直接按需要的组数来循环,遍历每个可能的起始索引即可,既简洁又不会出错:

s = input('Enter String')
count = 0
# 只遍历到倒数第三个字符的索引,避免越界和重复统计
for i in range(len(s) - 2):
    if s[i] == 'b' and s[i+1] == 'o' and s[i+2] == 'b':
        count += 1
print(count)

可选优化(更Pythonic)

如果想让代码可读性更高,可以用字符串切片简化判断逻辑:

s = input('Enter String')
count = 0
for i in range(len(s) - 2):
    if s[i:i+3] == 'bob':
        count += 1
print(count)

内容的提问来源于stack exchange,提问作者RS404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:08:58