在练习日4中,小鱼给大家讲述了神秘的ASCII码编译及解密过程. 在ASCII码中,字符与十进制数字的互相转换是通过 ord()函数chr()函数。

今天小鱼要给大家介绍另一种在影视剧、侦探小说中更是鼎鼎大名的密码--摩斯密码。

莫斯密码,英文叫做Morse code,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。

摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。下图为摩斯密码对照表:

现在我们将26个英文字母对应摩斯密码表,如下:

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]

我们再将26个英文字母对应的写到一个字符串中:

"abcdefghijklmnopqrstuvwxyz"

我们来试一试吧!

小鱼提示:

在摩斯密码中,编译、解密的过程就是索引指令中字母在字母表中的对应位置,根据这个位置索引在摩斯密码表中的对应位置。

第一步,我们把每一个单词从单词列表中取出来,使用 遍历 基础代码块。

第二步,把每一个单词中的字母在字母串中所对应的位置取出来,定义为word_index,对应letter_str.index(r)。

第三步,根据位置信息,再到摩斯密码表中取出来它的密码。

第四步,把最终的密码拼接起来,打印出来即可。

补充知识:index()

Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。

str.index(str, beg=0, end=len(string))

  • str -- 指定检索的字符串
  • beg -- 开始索引,默认为0。
  • end -- 结束索引,默认为字符串的长度。

index( )相当于索引功能的反向操作:索引是根据位置找元素,而index( )是根据元素找位置。

解题方法:

morse_code_list = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]letter_str = "abcdefghijklmnopqrstuvwxyz"word_list = ["abc", "cba"]result = ""
for i in word_list:for r in i:# 取出来每一个字母在letter_str中的位置,根据元素找位置,用Index()word_index = letter_str.index(r)# 根据取出来的位置,从morse_code_list获取到摩斯密码值,根据位置找元素,用索引morse_code = morse_code_list[word_index]result = result + morse_code + "|"
# 打印结果
print(result)

在ASCII码和摩斯密码的转化过程中,核心点在于它们都存在转换的逻辑也就是编译、解密遵循的规则。

在ASCII码中,这个规则 ord()函数chr()函数,只要有指令,就可以把指令拆分,并逐一通过函数进行转换。

在摩斯密码中,这个规则就是索引指令中字母在字母表中的对应位置,根据这个位置索引在摩斯密码表中的对应位置。这与ASCII码的规则是有本质不同的。

因此,当规则遵循位置对应时,我们应该想到列表的定义:一系列按照特定顺序排列的元素的数据类型。利用列表元素的索引来实现需求。

也由此我们可以抽取 根据 一个元素 的在某个列表(这个列表中必须包含这个元素)的索引位置 对应到另一个列表(这个列表中不一定包含这个元素)元素 的基础代码块。

一个元素: r
列表1=['abckdahfsdl r ksdf']
列表2=[123413534523451341341]对应位置=列表1.index(r)  #根据元素找位置,用Index()
所求元素=列表2[对应位置]  #根据位置找元素,用索引


听完小鱼的介绍,是不是觉得摩斯密码也很简单呢?

相信你已经能编译和解密出摩斯密码,成为一个特工了。快试试吧。

python列表所有元素平均值_【全网最简单Python教程】--10.列表元素的索引和返回索引值(Index函数使用)...相关推荐

  1. python中最大值最小值平均值_来自lis的Python平均值、最大值、最小值

    所以我有这样一个清单:kesto = ['3m 24s', '45s', '1h 2m 40s'] 我需要找到这些的平均值,最小值和最大值. 我试过: ^{pr2}$ 但这当然行不通,因为这些不是数字 ...

  2. python中字体加粗_全网python中xticks字体加粗搜索-第二电脑网

    第二电脑网 网页 电脑论坛 电脑知识 搜吧 问问 博客 新闻 更多» soso.mark('logo_start'); soso.mark('logo_end'); 帮助 | 第二电脑网为主页 | 提 ...

  3. python图形界面设计代码_(八)Python 图形化界面设计

    3.1.文本输入和输出相关控件:文本的输入与输出控件通常包括:标签(Label).消息(Message).输入框(Entry).文本框(Text).他们除了前述共同属性外,都具有一些特征属性和功能. ...

  4. 苹果主题商店_苹果手机怎么换铃声?全网最简单的教程来了,小白秒学会

    原标题:苹果手机怎么换铃声?全网最简单的教程来了,小白秒学会 当身处公交.地铁等公共场所时,听到iPhone熟悉的来电铃声,不少iPhone用户都会下意识地拿出手机确认是否有来电,然而真实情况往往是别 ...

  5. 零基础学python 视频_全网最全Python视频教程真正零基础学习Python视频教程 490集...

    Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python Web开发进阶课程,手把手教你用Python开发完整的商业 ...

  6. python list元素类型_阿博的Python之路-详解List数据类型

    之前阿博分享了String的数据类型知识,接下来要分享是的List数据类型.这种数据类型是在日常开发当中最常使用到的. python数据列表 简单创建List list1 = ['Python','J ...

  7. python删除元素del 可以删除部分元素吗_可以使用del删除集合中的部分元素。

    [判断题]Python集合可以包含相同的元素.(3.0分) [单选题]student = dict(姓名='张三', 年龄=20, 性别='男'),则student.get("name&qu ...

  8. python合并两个属性_合并两个部分包含文件列表及其属性的最有效方法

    我有一个系统,该系统运行带有ls或dir命令的变体的自定义cli,并返回工作目录中文件和文件夹的列表. 问题是,我可以使用带标志的命令运行命令,该标志返回文件及其时间戳(创建和最后修改的日期),或者返 ...

  9. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

  10. 趣学python教孩子学编程_《趣学Python——教孩子学编程》学习笔记第1-3章

    第1章 Python不是大蟒蛇 1.1 关于计算机语言 计算机程序是一组让计算机执行某种动作的指令.软件就是计算机程序的集合. 一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能 ...

最新文章

  1. 由于不知线程池的bug,某Java程序员叕被祭天
  2. centos 安装java web_Centos上安装java web的环境
  3. linux内核网络协议栈--linux网络设备理解(十四)
  4. 数位dp 记忆化搜索java_hdu 5787 数位dp,记忆化搜索
  5. HTMl文件的阶层架构 访问父元素和子元素
  6. hoj 2741 The Busiest Man // 强连通分支+缩点+传递闭包
  7. 【吾日三省吾身】2015.6.07-涅槃行动第二十天
  8. 使用IP-guard补丁分发批处理脚本实现分发补丁
  9. unity5.x游戏开发指南示例下载
  10. 怎么让放大的图片变清晰?
  11. 计算机类毕业设计评阅书评语,本科毕业论文专家评阅评语
  12. 中台战略=微服务+服务治理+组织架构
  13. VS2016相对路径起点
  14. Cocos2d-X Box2D内容讲解
  15. NC14548-B-逃脱(bfs)
  16. 插图精美的html css教程
  17. Zygote如何fork一个进程
  18. 灰度共生矩阵原理+Matlab中实现
  19. 如何将二维码分解成链接?二维码解码在线怎么操作?
  20. MySQL语法学习笔记

热门文章

  1. POJ 2159 解题报告
  2. ASP.NET MVC 3—一切的开始MvcHandler、MvcHttpHandler
  3. 中国队新主帅朱广沪印象
  4. Exynos4412 BSP平台搭建(详细图解)
  5. Pytorch squeeze() 和 unsqueeze() 方法区别
  6. 2018修复激活闪退_IOS越狱后和平精英闪退、黑屏、10min封号的解决办法!
  7. python实现通讯录的增删改查_python实现数据库增删改查
  8. python定时器 循环_Python循环定时服务功能(相似contrab)
  9. Emacs进阶之按键重映射
  10. web之webassembly安装