whm2323063185 发表于 2022-3-6 20:40:29

27讲练习最后一题

s = input("请按规则输入一个字符串:")
   
length = len(s)
res = []
# 获取字母 a 的编码值
base = ord('a')
   
# 从第一个元素开始,每次迭代跳过一个元素
for i in range(0, length, 2):
    # ord(s) - base 操作得到一个字母的偏移值,比如 b 就是 1
    # 跟 26 求余数的作用是防止溢出,循环计算偏移
    shift = chr((ord(s) - base + int(s)) % 26 + base)
    print(s+shift, end="")

这个和26取余数防溢出具体是怎么操作的,不太理解

isdkz 发表于 2022-3-6 20:45:11

就像钟表一样,钟只能表示 12 个小时,所以一旦超过 12 个小时就得让时钟回到原点,

而这个操作就相当于和12取余数,

这个也是一样的道理,因为只有 26 个字母,为了使它偏移后不超出字母的范围,就得和26取余数
页: [1]
查看完整版本: 27讲练习最后一题