Python字符串处理:末尾两字符交换转小写加空格的bug修复
问题说明
需要实现的字符串处理规则:
- 提取字符串内的最后两个字母,交换顺序后转为小写,两个字符中间用空格分隔
- 处理过程中忽略所有非字母字符(数字、符号、空格等)
- 参考效果:输入
APPLE输出e l;输入App3e输出e p - 当前故障:代码运行输出结果前存在多余空白字符,且未满足忽略非字母字符的要求
原有代码问题点
- 未做字符过滤:直接截取原字符串末尾两位,会把非字母内容纳入计算,这也是输出出现多余空白的核心原因——如果字符串末尾存在空格、符号等非字母内容,会被直接拼接到结果里
- 缩进错误:
return语句被错误放在for循环内部,第一次循环就会终止函数,遍历逻辑完全失效 - 逻辑冗余:逐字符判断大小写再转小写的写法没有必要,字符串自带的
lower()方法可以直接完成全串小写转换
修正后代码
def last_Letters(word): # 先过滤所有非字母字符 valid_chars = [c for c in word if c.isalpha()] # 取有效字母的最后两位 last_two = valid_chars[-2:] # 交换顺序、转小写后用空格拼接 return f"{last_two[1].lower()} {last_two[0].lower()}" # 移除输入提示内的多余空格 word = input() print(last_Letters(word))
验证结果
- 输入
APPLE:有效字符为A,P,P,L,E,最后两位为L、E,交换转小写后输出e l,符合预期 - 输入
App3e:过滤掉数字3后有效字符为A,p,p,e,最后两位为p、e,交换转小写后输出e p,符合预期 - 所有非字母字符被过滤,不会再出现多余空白问题
内容的提问来源于stack exchange,提问作者quigley
相关产品推荐
相关产品推荐

