python入门教程零基础学习

python入门教程NO.3 用python破解谍报密码

2020-04-15  本文已影响0人  python攻城狮
python入门教程破解谍报密码

python入门教程NO.3 用python破解谍报密码

本文涉及的python基础语法为:列表及其方法

列表

我们发现了一段存在[]中的谍报密码,为了破解他,我们必须先来学习一下,这个存放着谍报密码的[]

list1 = ['西游记', '三国演义', '水浒传', '红楼梦']   #字符串格式一定要记得加上引号
list2 = [2, 4, 6, 8]  #一段偶数序列

读取列表的值

上面我们讲到了列表的索引,我们可以通过列表的索引来获取它的元素,示例如下:

list1 = ['西游记', '三国演义', '水浒传', '红楼梦']   #字符串格式一定要记得加上引号
print(list1[0])    #list1[0]就是'西游记'的索引
#输出:西游记   

print(list1[1])    #list1[1]就是'三国演义'的索引
#输出:三国演义   

print(list1[2])     #list1[2]就是'水浒传'的索引
#输出:水浒传    

print(list1[3])    #list1[3]就是 '红楼梦'的索引
#输出:红楼梦

列表的切片

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

注意切片的结果不包含结束索引,即不包含最后的一位,通常我们称为左闭右开, -1代表列表的最后一个位置索引

list1 = ['西游记', '三国演义', '水浒传', '红楼梦'] 

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

#从左至右,list1的元素用反向的索引来取值的方式:
list1[-4], list1[-3], list1[-2], list1[-1]

如果我只想要list1的前三个元素,该怎么写呢?

list1 = ['西游记', '三国演义', '水浒传', '红楼梦'] 

print(list1[0 : 3])
#输出:['西游记', '三国演义', '水浒传']

注意切片的左闭右开原则,不包含结束索引,即不包含最后的一位

假如有一组从0-10的列表,我们只想要这个列表里面的所有偶数元素,那么该怎么取值呢?

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]

列表脚本操作符

表达式 描述 结果
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) 对原列表进行排序

如何破解谍报密码?

现在我的手头有这样一份谍报密码,请你按照提示完成密码的破解,下面,让我们来开始吧!

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 转为字符串并打印到屏幕上。

现在请按照上面的提示来破解这封谍报,看看这位它写了什么信息。

问题的中涉及的python列表方法都已经在上面的表格里面


上一篇下一篇

猜你喜欢

热点阅读