python入门教程NO.3 用python破解谍报密码
2020-04-15 本文已影响0人
python攻城狮
python入门教程破解谍报密码
python入门教程NO.3 用python破解谍报密码
本文涉及的python基础语法为:列表及其方法
列表
我们发现了一段存在[]
中的谍报密码,为了破解他,我们必须先来学习一下,这个存放着谍报密码的[]
列表是python内置的一种序列,其他的序列我们后面会一一介绍
序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示
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]
start:起始索引,从0开始,-1表示结束
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列表方法都已经在上面的表格里面