Python函数中For循环未遍历字符串,字符匹配计数功能异常排查
代码问题排查
你的代码存在以下几个核心问题,导致无法得到预期结果:
- 参数与判断逻辑错误:函数定义时声明了接收
text1、text2两个入参,但函数内部遍历的是全局变量firstword,且判断条件写为if c == secondword,是将单个字符和完整的第二个字符串做相等校验,这个条件永远不可能成立,因此计数永远不会累加,也永远触发不了return True的分支,函数最终只会返回False。 - 逻辑与返回值不符合需求:你的目标是统计相同位置的匹配字符总数,但代码中只要匹配到第一个符合条件的字符就会直接
return True终止函数,无法完成全量遍历计数,且函数最终返回的是布尔值,不是要求的数字类型的计数结果。 - 未兼容长度差异场景:如果两个输入字符串长度不一致,按位置匹配需要以较短的字符串长度作为遍历边界,否则会出现索引越界错误。
修正后的可运行代码
def occurrences(text1, text2): count = 0 # 取两个字符串的最小长度作为遍历上限,避免索引越界 min_length = min(len(text1), len(text2)) for index in range(min_length): # 逐一比较相同索引位置的字符 if text1[index] == text2[index]: count += 1 # 返回统计得到的匹配数 return count firstword = input("Enter first word: ") secondword = input("Enter second word: ") result = occurrences(firstword, secondword) print(f"匹配字符数量为:{result}")
输入测试用例bad和bed时,代码会返回结果2,符合需求。
内容的提问来源于stack exchange,提问作者Renaissance Man
相关产品推荐
相关产品推荐

