鱼C论坛

 找回密码
 立即注册
查看: 2081|回复: 4

[已解决]新手关于恺撒密码的一点疑问求助

[复制链接]
发表于 2021-6-3 15:24:25 | 显示全部楼层 |阅读模式

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

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

x
s = input()
t = ""
for c in s:
    if 'a' <= c <= 'z':
        t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
    elif 'A' <= c <= 'Z':
        t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )
    else:
        t += c
print(t)
代码的第三行到倒数第四行不是很懂,关于 那个c真的看不懂
求大佬解答一下。
最佳答案
2021-6-3 16:18:32
略微卓见

  1. s = input()
  2. t = ""
  3. for c in s: #遍历s变量,将s变量的值赋值到c变量中
  4.     if 'a' <= c <= 'z': #判断c变量是不是英文小写
  5.         t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 ) # ord()是将字符串转换成对应的ASCII码,而chr()是将ASCII码转换成字符串通过 +=的方式赋值到t变量中
  6.     elif 'A' <= c <= 'Z': #判断c变量是不是英文大写
  7.         t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )#同理如上
  8.     else: #如果不是英文的大小写则直接将值赋值到 t变量中
  9.         t += c
  10. print(t)#打印t变量
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-3 15:33:13 | 显示全部楼层
本帖最后由 rookie0912 于 2021-6-3 15:34 编辑

恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入包含大小写字母a~zA~Z、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 16:18:32 | 显示全部楼层    本楼为最佳答案   
略微卓见

  1. s = input()
  2. t = ""
  3. for c in s: #遍历s变量,将s变量的值赋值到c变量中
  4.     if 'a' <= c <= 'z': #判断c变量是不是英文小写
  5.         t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 ) # ord()是将字符串转换成对应的ASCII码,而chr()是将ASCII码转换成字符串通过 +=的方式赋值到t变量中
  6.     elif 'A' <= c <= 'Z': #判断c变量是不是英文大写
  7.         t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )#同理如上
  8.     else: #如果不是英文的大小写则直接将值赋值到 t变量中
  9.         t += c
  10. print(t)#打印t变量
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-6-3 17:48:22 | 显示全部楼层

想请教一下,这里的遍历是不是将字符串里面每一个字符进行运算?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 18:38:16 | 显示全部楼层
rookie0912 发表于 2021-6-3 17:48
想请教一下,这里的遍历是不是将字符串里面每一个字符进行运算?

例如遍历a遍历:
  1. a = [1,2,3,4,5]
  2. for i in a:
  3.     print(i)
复制代码

输入的结果是
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
复制代码

for  in 循环用于遍历字符串、列表,元组,字典等。遍历完所有元素循环结束。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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