Python基础代码报错排查:如何判断单词首中末字母是否按序排列?
代码错误修复与功能实现
原代码存在的问题
- 变量拼写错误:
inital应为initial;srortedword是冗余拼写错误变量(未使用可删除) - 条件分支逻辑错误:判断
len(wrd) // 2 == 0时,错误使用单词列表lst取字符,应使用当前遍历的单词wrd;且该条件逻辑无意义——无论单词长度奇偶,都可通过len(wrd)//2获取中间位置索引,无需分分支处理 - 未实现核心判断逻辑:仅对三个字母排序,但未验证原顺序是否与排序后顺序一致
- 函数无返回值:调用后打印结果为
None,无法输出有效内容 - 排序结果处理错误:
sorted()返回列表,需转为字符串才能与原拼接字符串比较
修复后的代码
def alphabetical_check(example): word_list = example.split() valid_words = [] for word in word_list: if len(word) < 3: # 跳过长度不足3的单词,无法取首、中、尾三个字母 continue # 获取首、中、尾字母 initial = word[0] middle = word[len(word) // 2] final = word[-1] # 拼接并检查字母顺序 char_group = initial + middle + final sorted_group = ''.join(sorted(char_group)) # 原顺序与排序后一致则符合要求 if char_group == sorted_group: valid_words.append(word) return valid_words # 测试调用 print(alphabetical_check("red cat abc dog hat"))
代码说明
- 新增长度校验:避免因单词过短导致的索引错误
- 简化字符获取逻辑:统一从当前单词中提取目标字母,无需分支判断
- 实现核心判断:通过对比原字母组合与排序后组合,验证是否按字母顺序排列
- 收集并返回结果:函数返回符合条件的单词列表,调用后可直接输出有效内容
测试输出:
['abc', 'hat']
内容的提问来源于stack exchange,提问作者John Kay
相关产品推荐
相关产品推荐

