如何检查不同字符串同索引元素是否匹配?Python代码问题排查
如何检查两个等长字符串同索引位置的元素是否匹配?
需求:给定两个等长字符串(处理后的猜测单词和完整正确单词),验证相同索引位置的字母是否匹配。例如猜测词
'ap_ le'(处理后为'ap_le')和正确词'apple',同索引的字母均匹配,函数应返回True。现有代码运行后无输出,经排查问题出在索引检查逻辑上,不清楚如何正确验证元素与索引的一致性,附代码:
import string def match_with_gaps(guess, correct_word): g = list(guess.replace(' ','')) cw = list(correct_word) indices = [idx for idx, x in enumerate(g) if x in string.ascii_lowercase] for ltr in indices: if g[ltr] == cw[ltr]: return True return False match_with_gaps('ap_ le', 'apple')
问题分析
- 提前返回逻辑错误:原代码只要找到第一个匹配的索引就直接返回
True,未检查所有需要验证的字母是否全部匹配,逻辑不严谨。 - 无输出的直接原因:调用函数后未打印返回值,导致看不到结果。
- 缺失长度校验:未提前判断处理后的猜测词和正确词长度是否一致,存在索引越界风险。
修正方案
正确逻辑应为:遍历猜测词中所有是字母的位置,检查每个位置与正确词对应索引的字母是否全部匹配——只要有一个不匹配就返回False,全部匹配才返回True。
修正后的代码:
import string def match_with_gaps(guess, correct_word): # 去除猜测词空格并转为列表 processed_guess = list(guess.replace(' ', '')) correct_list = list(correct_word) # 长度不一致直接返回False if len(processed_guess) != len(correct_list): return False # 遍历每个索引和字符,检查所有需验证的字母 for idx, char in enumerate(processed_guess): if char in string.ascii_lowercase: if char != correct_list[idx]: return False # 所有需验证字母均匹配 return True # 调用并打印结果 print(match_with_gaps('ap_ le', 'apple')) # 输出 True print(match_with_gaps('bp_ le', 'apple')) # 输出 False
关键修改说明
- 增加长度校验,避免索引越界问题;
- 遍历所有字符,对每个字母位置逐一校验,确保所有需验证的字母都匹配;
- 添加
print()输出函数返回值,解决无输出问题。
内容的提问来源于stack exchange,提问作者Jack Goff
相关产品推荐
相关产品推荐

