CodeWars字母位置替换挑战报错:代码无法运行求修复方案
修复CodeWars字母位置替换问题的代码方案
原代码的问题:
- 循环遍历的是字符串索引而非字符本身,导致判断逻辑完全失效(拿数字索引去匹配字母列表)
- 循环范围
range(0, len(text)-1)会漏掉最后一个字符 - 结果拼接时未添加空格,最终输出是无分隔的字符串,不符合题目要求的格式
- 维护三个冗余列表,代码效率低且没必要
修复后的代码:
def alphabet_position(text): result = [] # 统一转小写,无需区分大小写判断 for char in text.lower(): # 判断是否为小写字母 if 'a' <= char <= 'z': # 通过ASCII码直接计算字母位置,a对应1 position = ord(char) - ord('a') + 1 result.append(str(position)) # 用空格拼接所有位置字符串 return ' '.join(result)
代码说明:
- 把输入字符串统一转为小写,只需一次判断就能覆盖大小写字母的情况
- 借助ASCII码计算位置,省去维护额外字母、数字列表的麻烦,逻辑更简洁
- 用列表收集结果后再拼接,比逐字符累加字符串更高效
- 自动忽略非字母字符,完全符合题目要求
内容的提问来源于stack exchange,提问作者theGOAT
相关产品推荐
相关产品推荐

