美文网首页python入门教程零基础学习
python入门教程NO.3 用python破解谍报密码

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

作者: python攻城狮 | 来源:发表于2020-04-15 20:32 被阅读0次
    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入门教程NO.3 用python破解谍报密码

        本文链接:https://www.haomeiwen.com/subject/ltcfvhtx.html