(小甲鱼字符串IV编程)1.编写一个生成凯撒密码的程序。2.给定一个字符串数组 words,只返回可以使用在美式键盘同一行的字母打印出来的单词,键盘布局如下图所示。
1.编写一个生成凯撒密码的程序
科普:
凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。
原理:
凯撒密码是一种通过位移加密的方法,对 26 个(大小写)字母进行位移加密,比如下方是正向位移 6 位的字母对比表:
明文字母表如下
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
密文字母表如下
GHIJKLMNOPQRSTUVWXYZABCDEFghijklmnopqrstuvwxyzabcdef
所以,如果给定加密的明文是:
I love FishC
那么程序加密后输出的密文便是:
O rubk LoynI
程序实现如下:
答案代码:
plain = list(input("请输入需要加密的明文(只支持英文字母):"))
key = int(input("请输入移动的位数:"))base_A = ord('A')
base_a = ord('a')cipher = []
for each in plain:if each == ' ':cipher.append(' ')else:if each.isupper():base = base_Aelse:base = base_acipher.append(chr((ord(each) - base + key) % 26 + base))print(''.join(cipher))
解析:chr((ord(each) - base + key) % 26 + base)的理解可以参考一下 字符串I
这里举个例子:
刚开始第一个字符为大写I时:
chr((ord(each) - base + key) % 26 + base)
ord(each)=ord('I')=73 ,
base=ord('A') = 65,base的值是由if语句得到的,
所以最终结果为chr((ord('I')-65+6)%26+65)=chr((73-65+6)%26+65)=chr(79)='0'
得证,第一个字符'I'对应的密文是'0'
科普:
python判断字符串大小写的三大函数——islower、isupper、istitle函数的用法
string.islower() 判断字符串的区分大小写的字符是否全为小写。
string.isupper() 字符串中的所有字母是否都是大写的。如果所有字母都是大写的,该函数返回真。
string.istitel() 判断字符串的的所有单词是否首字母(开头)是大写其他为小写。
举例:
string1 = 'abcde666'
string1.islower() #输出结果为:TRUE
string1.isupper() #输出结果为:FALSE
string1.istitle() #输出结果为:FALSE
结果:

2.给定一个字符串数组 words,只返回可以使用在美式键盘同一行的字母打印出来的单词,键盘布局如下图所示。

美式键盘中:
- 第一行由字符 “qwertyuiop” 组成
- 第二行由字符 “asdfghjkl” 组成
- 第三行由字符 “zxcvbnm” 组成
举例:
输入:words = [“Twitter”, “TOTO”, “FishC”, “Python”, “ASL”])
输出:[‘Twitter’, ‘TOTO’, ‘ASL’]
答案代码:
words = ["Twitter", "TOTO", "FishC", "Python", "ASL"]res = []
for i in words:# 由于单词存在大小写,所以这里统一先转换为小写字母j = i.lower()# 灵活运用 strip() 方法,判断 j 是否所有字符都在键盘的同一行内if j.strip("qwertyuiop") == '' or j.strip("asdfghjkl") == '' or j.strip("zxcvbnm") == '':res.append(i)print(res)
解析:
代码中strip()函数的使用,
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
例1:
str = "00000003210Runoob01230000000";
print str.strip( '0' ); # 去除首尾字符 0
str2 = " Runoob "; # 去除首尾空格
print str2.strip()#结果
3210Runoob0123
Runoob
例2:题目中的应用
>>> a="twitter" #strip() 方法用于移除字符串头尾指定的字符序列
>>> a.strip("qwertyuiop")
''
>>>
>>> a="python" #strip() 方法用于移除字符串头尾指定的字符序列
>>> a.strip("qwertyuiop")
'hon'
>>>
>>> a="qrtyuiio"
>>> a.strip("qwertyuiop")
''
结果:

题目来自小甲鱼字符串(IV)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
