如果Python出現在抗日時期,那簡直是神器破解百分之九十諜報密碼

列表

我們發現了一段存在

[] 中的諜報密碼,為了破解他,我們必須先來學習一下,這個存放著諜報密碼的 []

  • 列表是python內置的一種序列,其他的序列我們後面會一一介紹
  • 序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推
  • 創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。如下所示
<code>list1 = ['西遊記', '三國演義', '水滸傳', '紅樓夢']   #字符串格式一定要記得加上引號
list2 = [2, 4, 6, 8] #一段偶數序列/<code>

讀取列表的值

上面我們講到了列表的索引,我們可以通過列表的索引來獲取它的元素,示例如下:

<code>list1 = ['西遊記', '三國演義', '水滸傳', '紅樓夢']   #字符串格式一定要記得加上引號
print(list1[0]) #list1[0]就是'西遊記'的索引
#輸出:西遊記

print(list1[1]) #list1[1]就是'三國演義'的索引

#輸出:三國演義

print(list1[2]) #list1[2]就是'水滸傳'的索引
#輸出:水滸傳

print(list1[3]) #list1[3]就是 '紅樓夢'的索引
#輸出:紅樓夢/<code>

列表的切片

列表的切片格式是 list[start:end:step]

  • start:起始索引,從0開始,-1表示結束
  • end:結束索引
  • step:步長,步長為正時,從左向右取值。步長為負時,反向取值

注意切片的結果不包含結束索引,即不包含最後的一位,通常我們稱為 左閉右開 , -1代表列表的最後一個位置索引

<code>list1 = ['西遊記', '三國演義', '水滸傳', '紅樓夢'] 

#從左至右,list1的元素用正向的索引來取值的方式:
list1[0], list1[1], list1[2], list1[3]

#從左至右,list1的元素用反向的索引來取值的方式:
list1[-4], list1[-3], list1[-2], list1[-1]/<code>

如果我只想要list1的前三個元素,該怎麼寫呢?

<code>list1 = ['西遊記', '三國演義', '水滸傳', '紅樓夢'] 

print(list1[0 : 3])
#輸出:['西遊記', '三國演義', '水滸傳']

注意切片的左閉右開原則,不包含結束索引,即不包含最後的一位/<code>

假如有一組從0-10的列表,我們只想要這個列表裡面的所有偶數元素,那麼該怎麼取值呢?

<code>list2 = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10]

print(list2[0 : 11 : 2]) #注意左閉右開,為了取得元素10,所以我們的索引值要+1
#輸出:[0, 2, 4, 6, 8, 10]/<code>

列表腳本操作符

表達式描述結果len( [0 , 1 , 2 , 3 , 4 , 5 ])len()獲取列表的長度6[1, 2, 3] + [4, 5, 6]+ 表示多個列表組合[1, 2, 3, 4, 5, 6]['邏輯課'] * 2* 表示重複列表['邏輯課' , '邏輯課']5 in [1, 2, 5]in 表示元素是否存在於列表中True

列表的函數

函數描述cmp(list1, list2)比較兩個列表的元素len(list)列表元素個數max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)將元組轉換為列表(後面我們會講到元組)

列表的方法

方法描述list.append(obj)在列表末尾添加新的對象list.count(obj)統計某個元素在列表中出現的次數list.extend(seq)在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)list.index(obj)從列表中找出某個值第一個匹配項的索引位置list.insert(index, obj)將對象插入列表list.pop([index=-1])移除列表中的一個元素(默認最後一個元素),並且返回該元素的值list.remove(obj)移除列表中某個值的第一個匹配項list.reverse()反向列表中元素list.sort(cmp=None, key=None, reverse=False)對原列表進行排序

如何破解諜報密碼?

現在我的手頭有這樣一份諜報密碼,請你按照提示完成密碼的破解,下面,讓我們來開始吧!

<code>report = [
'u', 'b', '1', 't', 's', '0', '3', '9', 'k', 'b',
'4', 'n', ' ', '7', 'b', 'f', 'h', 'r', '3', '6',
's', 'v', 'f', ' ', '-', 'z', 'e', 'b', '8', '5',
'ə', 'j', 'u', '2', 'o', 'l', '8', 'b', 'i', 'q',
'b', '7', '9', 'b', 'm', 'i', 's', '3', 'i', '8',
'$', 'u', '0', 't', '9', ';', 'q', 'w', ' ', '!',
]

#取出列表 report 中第 12 到 13 個元素(包含 12 和 13),存放在到變量裡,比如 secret 變量裡;

#列表 secret 尾部追加 report 列表中最中間的一個元素;
#列表 secret 尾部追加 report 列表中元素'b'出現的次數
#列表 secret 尾部追加 report 列表中最後的兩個元素;
#將字符串'ʌo'插入到列表索引 secret[3]的位置
#使用print(''.join(secret))將列表 secret 轉為字符串並打印到屏幕上。/<code>

現在請按照上面的提示來破解這封諜報,看看這位它寫了什麼信息。

問題的中涉及的python列表方法都已經在上面的表格裡面


分享到:


相關文章: