鱼C论坛

 找回密码
 立即注册
查看: 1569|回复: 1

[已解决]27讲练习最后一题

[复制链接]
发表于 2022-3-6 20:40:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

这个和26取余数防溢出具体是怎么操作的,不太理解
最佳答案
2022-3-6 20:45:11
就像钟表一样,钟只能表示 12 个小时,所以一旦超过 12 个小时就得让时钟回到原点,

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

这个也是一样的道理,因为只有 26 个字母,为了使它偏移后不超出字母的范围,就得和26取余数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-6 20:45:11 | 显示全部楼层    本楼为最佳答案   
就像钟表一样,钟只能表示 12 个小时,所以一旦超过 12 个小时就得让时钟回到原点,

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

这个也是一样的道理,因为只有 26 个字母,为了使它偏移后不超出字母的范围,就得和26取余数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 05:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表