python入门教程NO.3 用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列表方法都已经在上面的表格里面

对于初学者想更轻松的学好Python开发,爬虫技术,Python数据分析,人工智能等技术,这里也给大家准备了一套系统教学资源,加Python技术学习教程qq裙:855408893,免费领取。学习过程中有疑问,群里有专业的老司机免费答疑解惑!点击加入我们的 python学习圈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值