Python代码统计字符串中'Hamza'出现次数返回0的问题排查
问题分析与解决
你的代码存在两个核心问题,导致统计结果始终为0:
- 遍历逻辑错误:
for sub_str in string是逐个遍历字符串的单个字符,每个sub_str都是单个字母,永远不可能匹配长度为5的"Hamza",因此条件判断永远不触发,count值始终为初始的0。 - 缩进错误:原代码中
return count写在了for循环的缩进块内,哪怕遍历逻辑正确,第一次循环就会直接返回结果,根本无法完成完整遍历。
修正方案1:使用字符串内置count()方法(最简高效)
直接利用Python字符串的内置方法,一行就能完成统计:
string = "Hamza flew his kite today. But Hamza forgot to play basketball" def count_name(): return string.count("Hamza") print(count_name()) # 输出:2
修正方案2:手动遍历子串(适合理解底层逻辑)
如果需要手动实现遍历逻辑,需按目标子串的长度截取片段进行匹配:
string = "Hamza flew his kite today. But Hamza forgot to play basketball" def count_name(): count = 0 target = "Hamza" target_length = len(target) # 遍历到字符串末尾前target_length的位置,避免索引越界 for i in range(len(string) - target_length + 1): # 截取从i开始的target_length个字符进行匹配 if string[i:i+target_length] == target: count += 1 return count print(count_name()) # 输出:2
内容的提问来源于stack exchange,提问作者Hamza Khatib
相关产品推荐
相关产品推荐

