①注意看 % 和 {} 格式化打印的區別,將它們與C語言的格式化打印區分開來。算法
2.凱撒加密算法
①原理:字母表一共有26個英文字母,加密時,咱們須要將某個明文字母作N位偏移獲得密文,這個N最多爲26,並且偏移爲26時和偏移爲0時同樣,明文和密文對應相等,實際上能夠說最大的偏移量爲25,這裏的偏移量是這個加密解密算法的核心。app
公式:n爲偏移量dom
加密公式: 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位大寫字母驗證碼spa
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位大寫字母驗證碼,且不可重複。code
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分。
①用字典記錄下其豆瓣評分,並輸出字典blog
films = {'肖申克的救贖':9.7, '摔跤吧!爸爸':9.0,'阿甘正傳':9.5,'我和個人祖國':8.0,'哪吒之魔童降世':8.5, '千與千尋':9.3,'瘋狂動物城':9.2,'攀登者':6.5} print(films)
②現又新出了兩部影片及其評分(中國機長: 7.0,銀河補習班: 6.2),將此影評加入1)中的字典中,同時輸出字典中全部的影片名稱。ci
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字典中最大值的鍵