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

Python for loop实现3位字符串子串计数函数始终返回0的问题排查

代码问题定位与修正方案

核心问题梳理

  • 缺失返回语句,导致无法获取计算结果
    现有代码完成count值的累加后,没有通过return count将计数结果输出,Python默认会给无返回语句的函数返回None,很容易被误判为返回0的异常状态。
  • 硬编码固定切片长度,未适配传入子串的实际长度
    判断逻辑里写死了从i位置取3个字符和子串做对比,完全没有参考传入的sub_string的实际长度。只要传入的子串长度不是3位,哪怕位置完全匹配,切片取出的内容和目标子串长度都不一致,永远匹配不上,计数就会一直停在0。
  • 循环范围存在冗余遍历
    现有循环会覆盖原字符串的所有索引位置,当索引超过原字符串长度 - 子串长度的阈值时,从该位置开始的切片根本凑不够完整的子串长度,这些位置的判断属于无效计算,不会影响结果但会增加不必要的运行开销。

修正后的可运行代码

def count_substring(string, sub_string):
    count = 0
    sub_length = len(sub_string)
    # 仅遍历能完整放下目标子串的索引范围
    for i in range(len(string) - sub_length + 1):
        if string[i:i+sub_length] == sub_string:
            count += 1
    return count

实际测试:传入原字符串"122122"、目标子串"122"时,函数可正确返回2次的统计结果,同时兼容任意长度的子串统计需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 15:45:08