You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rot13函数编码超过122时转换失效问题排查问询

修复Rot13字符转换函数的问题

原代码的核心问题

原函数处理超出z(ASCII 122)的字符时,直接用a - 122得到的是ASCII控制字符,没有回到小写字母的起始位置(a,ASCII 97)。此外,原函数仅处理小写字母、未保留转换结果仅打印中间过程,也未考虑大写字母的情况。

解决方案代码

以下是修正后的通用字符偏移函数(支持任意偏移量,自然适配Rot13的13偏移需求):

def rotate_word(line, num):
    result = []
    for char in line:
        if char.islower():
            # 小写字母循环偏移:基于a(97)的位置计算
            base = ord('a')
            shifted_pos = (ord(char) - base + num) % 26
            result.append(chr(base + shifted_pos))
        elif char.isupper():
            # 大写字母循环偏移:基于A(65)的位置计算
            base = ord('A')
            shifted_pos = (ord(char) - base + num) % 26
            result.append(chr(base + shifted_pos))
        else:
            # 非字母字符直接保留
            result.append(char)
    return ''.join(result)

# 测试Rot13场景
print(rotate_word("hello", 13))  # 输出 uryyb
print(rotate_word("r", 13))      # 输出 e
print(rotate_word("HELLO", 13))  # 输出 URYYB

代码说明

  • 字母范围循环:通过(当前字符相对起始位置 + 偏移量) % 26实现循环,确保偏移后始终落在对应字母区间内(小写a-z、大写A-Z)。
  • 结果收集:用列表存储转换后的字符,最后拼接成字符串返回,方便后续使用而非仅打印过程。
  • 兼容非字母:遇到数字、符号等非字母字符时直接保留,不做转换。

内容的提问来源于stack exchange,提问作者Mahir Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:40:35