7-3jmu-python-凯撒密码加密算法(10分):编写⼀个凯撒密码加密程序,接收
⽤户。。。
前⾔
PTA程序设计类教学平台—Python作业⼆(循环结构程序设计)
⼩⽩进阶之路的学习与记录之------凯撒密码
题⽬:
编写⼀个凯撒密码加密程序,接收⽤户输⼊的⽂本和密钥k,对明⽂中的字母a-z和字母A-Z替换为其后第k个字母。
输⼊格式:
接收两⾏输⼊,第⼀⾏为待加密的明⽂,第⼆⾏为密钥k。
输出格式:
输出加密后的密⽂。
输⼊样例:
在这⾥给出⼀组输⼊。例如:
Hello World!
3
输出样例:
Khoor Zruog!
凯撒密码是什么?
原理:
通过把字母移动⼀定的位数来实现加解密
明⽂(加密前)中的所有字母从字母表向后(或向前)按照⼀个固定步长进⾏偏移后被替换成密⽂。
例如:
输⼊:abc
秘钥:3
输出:DEF
完整代码:
a =input()
b =int(input())
c =''
for i in a:
if i.isalpha():
temp =ord(i)+b
if chr(temp).isalpha():
c +=chr(temp)
else:
c +=chr(temp-26)
else:
c += i
print(c)
代码解析:
第⼀步根据题⽬要求要接收两⾏输⼊,第⼀⾏为待加密的明⽂,第⼆⾏为密钥k
所以使⽤input函数接收输⼊⽂本
a =input()
b =int(input()) “⽤int把字符串改成数值型”
第⼆步我们需要先掌握字符串和ASCII码的转换函数
chr()函数:将⼗进制数转化为基础字符
chr(65)
‘A’
ord():将字符转化为⼗进制数
ord(A)
65
例如:将A转变成C
ord(A)+2
C
有了以上的基础我们就可以编写⼀串字符的转变了
使⽤for i in 来遍历⼀遍⽤户输⼊的字符串并将它们转换成想要字符
a ="abc4a"
b =int(3)
c =""
for i in a:
temp =ord(i)+b
c +=chr(temp)
print(c)
此时我们会发现⼀个问题:如果字符串⾥⾯有数字时也会跟随改变,所以应该在⾥⾯再加上⼀个判断语句
str.isalpha:检查字符串是否只包含字母字符。
a ="abc4a"
b =int(3)
c =""
for i in a:
if i.isalpha():
temp =ord(i)+b
c +=chr(temp)
else:
c += i
isalpha 函数print(c)
解决上⾯的情况后会发现⼀个问题:如果字符串⾥⾯有字母太⼤的时候,位移后会变成别的符号,所以应该在⾥⾯再加上⼀个判断语句来确保字符串转换后还是不是字母
a =input()
b =int(input())
c =''
for i in a:
if i.isalpha():
temp =ord(i)+b
if chr(temp).isalpha():
c +=chr(temp)
else:
c +=chr(temp-26)
else:
c += i
print(c)
到这后就完美解决了~
实现的⽅法有很多,本篇博客只是给新⼿提供⼀种思路。如有帮助记得点赞~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论