- 在交互状态下格式化打印
①注意看 % 和 {} 格式化打印的区别,将它们与C语言的格式化打印区分开来。
2.凯撒加密算法
①原理:字母表一共有26个英文字母,加密时,我们需要将某个明文字母做N位偏移得到密文,这个N最多为26,而且偏移为26时和偏移为0时一样,明文和密文对应相等,实际上可以说最大的偏移量为25,这里的偏移量是这个加密解密算法的核心。
公式:n为偏移量
加密公式: f(a)=(a+n)mod 26
解密公式: f(a)=(a+26-n) mod 26
③代码:
import string
def kaisa(s, k): //定义函数接受一个字符串s和一个偏移量k
lower = string.ascii_lowercase //小写字母
upper = string.ascii_uppercase //大写字母
before = string.ascii_letters //无偏移的字母顺序小写+大写
after = lowerk] + lower[k] + upper(k] + upper[:k] //偏移后的字母顺序还是小写+大写;分别把小写字母和大写字母偏移后再加到一起
table = ' '.maketrans(before, after)
//创建映射表,before一一对应到after中相应位置的字符
//注意:两个字符串的长度要一致这里的' '.maketrans()中的' '可以换成str,也可以写成'sadwq';这里只是形式化的作用。
//要清楚函数和方法其实是不同的,函数前面不需要实例,比如len () . print (),而方法需要;这也是为什么以前写的时候不懂什么时候前面要加变量,什么时候不要加(方法和函数是不一样的,针对某个实例时,函数就变成了方法)
return s.translate(table) //对s进行偏移即加密
s = input("请输入一个字符串:")
3.随机生成10个,六位数数字的验证码,保存为其他人无法更改的格式
import random
code = [random.randint(100000, 999999) for x in range(10)]
acode = tuple(code) //tuple()函数创建元组
print(acode)
4.随机生成10个,6位大写字母验证码
import random,string
code = []
for i in range(10):
x = ' ' //x起到刷新的作用,每向列表中插入一个值以后,选出下一个值时,要把上一个值清空
for j in range(6):
x = x + random.choice(string.ascii_uppercase) #random.c.haice(seq)函数:从非空序列中随机选取一个数据并返回,该序列可以是list、tuple、str、set。默认选一个
code.append(x)
print(code)
5.随机生成10个,6位大写字母验证码,且不可重复。
import random,string
code = set()
while len(code) != 10: //len ()函数可以用于求list、tuple、dict中的元素个数,也可以用于求str的长度
x = ''
for i in range(6):
x = x + random.choice(string.ascii_uppercase)
code.add(x) //集合中增加元素的方法是code.add(seq)
print(code)
6.现有八部电影对其评分,有1-10分。
①用字典记录下其豆瓣评分,并输出字典
films = {'肖申克的救赎':9.7, '摔跤吧!爸爸':9.0,'阿甘正传':9.5,'我和我的祖国':8.0,'哪吒之魔童降世':8.5, '千与千寻':9.3,'疯狂动物城':9.2,'攀登者':6.5}
print(films)
②现又新出了两部影片及其评分(中国机长: 7.0,银河补习班: 6.2),将此影评加入1)中的字典中,同时输出字典中所有的影片名称。
films_new = {'中国机长':7.0,'银河补习班':6.2}
films.update(films_new) #字典中元素的插入 dict.update()函数
print("所有影片名称: ", films.keys())
③ 找出②中的字典中影评得分最高的影片。
③print("影片得分最高的影片: ", max(films,key=films.get)) //max(seq,key=None)函数的用法。dict.get(key)返回指定键的值
//所以max(films,key=films.get))返回films字典中最大值的键