rookie0912 发表于 2021-6-3 15:24:25

新手关于恺撒密码的一点疑问求助

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真的看不懂
求大佬解答一下。

rookie0912 发表于 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()获得输入。

fish_nian 发表于 2021-6-3 16:18:32

略微卓见

s = input()
t = ""
for c in s: #遍历s变量,将s变量的值赋值到c变量中
    if 'a' <= c <= 'z': #判断c变量是不是英文小写
      t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 ) # ord()是将字符串转换成对应的ASCII码,而chr()是将ASCII码转换成字符串通过 +=的方式赋值到t变量中
    elif 'A' <= c <= 'Z': #判断c变量是不是英文大写
      t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )#同理如上
    else: #如果不是英文的大小写则直接将值赋值到 t变量中
      t += c
print(t)#打印t变量

rookie0912 发表于 2021-6-3 17:48:22

fish_nian 发表于 2021-6-3 16:18
略微卓见

想请教一下,这里的遍历是不是将字符串里面每一个字符进行运算?

fish_nian 发表于 2021-6-3 18:38:16

rookie0912 发表于 2021-6-3 17:48
想请教一下,这里的遍历是不是将字符串里面每一个字符进行运算?

例如遍历a遍历:
a =
for i in a:
    print(i)
输入的结果是
1
2
3
4
5
forin 循环用于遍历字符串、列表,元组,字典等。遍历完所有元素循环结束。
页: [1]
查看完整版本: 新手关于恺撒密码的一点疑问求助