摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者Samuel F. B. Morse的名字命名。

点击免费领取《CSDN大礼包》:

最新全套【Python入门到进阶资料 & 实战源码 & 安装工具】

https://mp.weixin.qq.com/s/9IuSexhanYZ1TMAF1MZIhw

算法

算法非常简单。英语中的每个字符都被一系列“点”和“破折号”代替,或者有时只是单数的“点”或“破折号”,反之亦然。

加密

1、在加密的情况下,我们一次一个地从单词中提取每个字符(如果不是空格),并将其与存储在我们选择的任何数据结构中的相应摩斯密码匹配(如果您使用 python 编码,字典可以变成在这种情况下非常有用)

2、将摩斯密码存储在一个变量中,该变量将包含我们编码的字符串,然后我们在包含结果的字符串中添加一个空格。

3、在用摩斯密码编码时,我们需要在每个字符之间添加 1 个空格,在每个单词之间添加 2 个连续空格。

4、如果字符是空格,则向包含结果的变量添加另一个空格。我们重复这个过程,直到我们遍历整个字符串

解密

1、在解密的情况下,我们首先在要解码的字符串末尾添加一个空格(这将在后面解释)。

2、现在我们继续从字符串中提取字符,直到我们没有任何空间。

3、一旦我们得到一个空格,我们就会在提取的字符序列(或我们的莫尔斯电码)中查找相应的英语字符,并将其添加到将存储结果的变量中。

4、请记住,跟踪空间是此解密过程中最重要的部分。一旦我们得到 2 个连续的空格,我们就会向包含解码字符串的变量添加另一个空格。

5、字符串末尾的最后一个空格将帮助我们识别莫尔斯电码字符的最后一个序列(因为空格充当提取字符并开始解码它们的检查)。

执行

Python 提供了一种称为字典的数据结构,它以键值对的形式存储信息,这对于实现诸如摩尔斯电码之类的密码非常方便。我们可以将摩斯密码表保存在字典中,其中 (键值对)=>(英文字符-莫尔斯电码) 。明文(英文字符)代替密钥,密文(摩斯密码)形成相应密钥的值。键的值可以从字典中访问,就像我们通过索引访问数组的值一样,反之亦然。

摩斯密码对照表

# 实现摩斯密码翻译器的 Python 程序'''
VARIABLE KEY
'cipher' -> '存储英文字符串的摩斯翻译形式'
'decipher' -> '存储摩斯字符串的英文翻译形式'
'citext' -> '存储单个字符的摩斯密码'
'i' -> '计算摩斯字符之间的空格'
'message' -> '存储要编码或解码的字符串
'''# 表示摩斯密码图的字典
MORSE_CODE_DICT = { 'A':'.-', 'B':'-...','C':'-.-.', 'D':'-..', 'E':'.','F':'..-.', 'G':'--.', 'H':'....','I':'..', 'J':'.---', 'K':'-.-','L':'.-..', 'M':'--', 'N':'-.','O':'---', 'P':'.--.', 'Q':'--.-','R':'.-.', 'S':'...', 'T':'-','U':'..-', 'V':'...-', 'W':'.--','X':'-..-', 'Y':'-.--', 'Z':'--..','1':'.----', '2':'..---', '3':'...--','4':'....-', '5':'.....', '6':'-....','7':'--...', '8':'---..', '9':'----.','0':'-----', ', ':'--..--', '.':'.-.-.-','?':'..--..', '/':'-..-.', '-':'-....-','(':'-.--.', ')':'-.--.-'}# 根据摩斯密码图对字符串进行加密的函数
def encrypt(message):cipher = ''for letter in message:if letter != ' ':# 查字典并添加对应的摩斯密码# 用空格分隔不同字符的摩斯密码cipher += MORSE_CODE_DICT[letter] + ' 'else:# 1个空格表示不同的字符# 2表示不同的词cipher += ' 'return cipher# 将字符串从摩斯解密为英文的函数
def decrypt(message):# 在末尾添加额外空间以访问最后一个摩斯密码message += ' 'decipher = ''citext = ''for letter in message:# 检查空间if (letter != ' '):# 计数器来跟踪空间i = 0# 在空格的情况下citext += letter# 在空间的情况下else:# 如果 i = 1 表示一个新字符i += 1# 如果 i = 2 表示一个新词if i == 2 :# 添加空格来分隔单词decipher += ' 'else:# 使用它们的值访问密钥(加密的反向)decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT.values()).index(citext)]citext = ''return decipher# 硬编码驱动函数来运行程序
def main():message = "JUEJIN-HAIYONG"result = encrypt(message.upper())print (result)message = ".--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --."result = decrypt(message)print (result)message = "I LOVE YOU"result = encrypt(message.upper())print (result)message = "..  .-.. --- ...- .  -.-- --- ..-"result = decrypt(message)print (result)# 执行主函数
if __name__ == '__main__':main()

输出:

.--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --.
JUEJIN-HAIYONG
..  .-.. --- ...- .  -.-- --- ..-
I LOVE YOU
复制代码

快速总结——Python 程序实现摩斯密码翻译器

以上就是本篇文章的全部内容,您使用 Python 程序实现摩斯密码翻译器。我们希望本篇博客能够帮助到您,博主也在学习进行中,如有什么错误的地方还望批评指正。如果您喜欢这篇文章并有兴趣看到更多此类文章,可以看看这里(Github/Gitee) 这里汇总了我的全部原创及作品源码,关注我以查看更多文章。

既然你都读到这儿了,看来也是程序员的真爱,那就赶紧和我一起学到昏厥吧!

今天小编为大家带来了文末福利:

今天为大家带来一份500页,157条超实用Python代码实例集锦,资料覆盖从基础到进阶所有知识点。用问题+实例解答+原理解析+补充知识的完美学习路径,为你的Python学习答疑解惑!

这份资料旨在解决Python实际工作、学习场景中的具体问题,深入了解Python语言特性。基于实际案例,每个实例均是工作学习中遇到的疑难点。无论对于初学者入门还是扩展知识储备,都可以从中找到你需要解决的学习和工作难题。

你可以学到:
1、不同类型的数字、字符串、元组和Python的基本内置类型的使用方法。
2、创建脚本文件的基础知识。复杂语句(if、while、for、try、whth和raise)
3、函数定义技巧、利用typing模块为函数创建更正式的注释。
4、用python的各种数据结构解决问题—列表、集、字典
5、pringt()函数的多个功能、其他输入函数
6、实现大量统计公式的类。
7、深入探索Python类。创建更复杂的对象。
8、编写简介明了的数据转换函数、反应式编程。
9、处理不同的文件格式(JSON、XML、HTML)
10、统计编程和线性回归。
11、各种Python测试框架
12、创建RESTful Web服务,静态或动态内容。
13、Python实现大规模、复杂的复合应用程序的设计方法。
14、…

Python学习资源及经验总结

如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,我也为大家整理了一份 【最新全套Python学习资料】一定对你有用!

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的!

1、学习时间相对较短,学习内容更全面更集中

2、可以找到适合自己的学习方案

这份资料包含:Python安装包+激活码、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等教程,带你从零开始系统性的学好Python!

点击免费领取《CSDN大礼包》:

最新全套【Python入门到进阶资料 & 实战源码 & 安装工具】

https://mp.weixin.qq.com/s/9IuSexhanYZ1TMAF1MZIhw

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python课程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、清华编程大佬出品《漫画看学Python》

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。

五、Python实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、互联网企业面试真题

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

这份完整版的Python全套学习资料已经上传至CSDN官方,朋友们如果需要可以扫描下方二维码免费获取【保证100%免费】

以上全套资料已经为大家打包准备好了,希望对正在学习Python的你有所帮助!


如果你觉得这篇文章有帮助,可以点个赞呀~

我会坚持每天更新Python相关干货,分享自己的学习经验帮助想学习Python的朋友们少走弯路!

使用 Python解密摩斯密码,教程超详细,懂中文就会!相关推荐

  1. Python Numpy库教程(超详细)

    1 Numpy概述 1.1 概念 Python本身含有列表和数组,但对于大数据来说,这些结构是有很多不足的.由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.对于数值运算来说这种 结构比较 ...

  2. 10分钟教你用python打造贪吃蛇超详细教程

    更多精彩尽在微信公众号[程序猿声] 10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来 ...

  3. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

  4. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

  5. Python的零基础超详细讲解(第七天)-Python的数据的应用

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  6. Python的零基础超详细讲解(第五天)-Python的运算符

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  7. maven配置阿里云_阿里云OSS PicGo 配置图床教程 超详细

    阿里云OSS和PicGo配置图床教程 超详细 废话不多说,直接开始 购买阿里云OSS服务 登录阿里云 打开侧边栏,选择对象存储OSS,如下图: 对象存储界面右部选择创建Bucket,如下图所示: 之后 ...

  8. svn安装教程 mysql_CentOS6.4 下安装SVN的详细教程(超详细)

    1.检查系统是否已经安装如果安装就卸载 rpm -qa subversion yum remove subversion 2.安装 yum install subversion 3.建立SVN库 mk ...

  9. 新版Android Studio(4.1.1 for Windows 64-bit)的安装教程(超详细)

    新版Android Studio(4.1.1 for Windows 64-bit)的安装教程(超详细) 获取Android Studio软件 在心仪的磁盘新建文件夹:AndroidStudio(文件 ...

  10. python操作手机app超详细步骤

    〝 古人学问遗无力,少壮功夫老始成 〞 python操作手机app超详细步骤,现在很多app的都要刷经验打怪升级啥的,这些枯燥千篇一律但是很耗费时间的玩法,可以使用app自动去操作,解放双手,释放时间 ...

最新文章

  1. 都优秀!两位硕士都发一作Nature,之后选择却截然不同!
  2. string类有可以调换方向的函数吗_C++中的string类的用法小结
  3. Spark 与MapReduce 资源调度方面的简单对比
  4. ACM入门练习与递推小结
  5. js中的==与===的区别
  6. Cocos2d-x win7 + vs2010 配置图文详解(转)
  7. 爆料人透露苹果正开发可折叠iPhone:两块独立屏幕连接 无刘海
  8. Python使用装饰器和线程限制函数执行时间的方法
  9. 父工程的版本号决定上传私服仓库的位置
  10. SAP License:SAP中的权限与破解
  11. springboot 全局异常处理类
  12. linux启动mysql_允许远程连接到MySQL数据库服务器的步骤
  13. 苹果手机投影到墙上_针对商业用户倾情打造,明基E582智能无线投影仪体验
  14. 2007年沪市上涨前20与后20
  15. 计算机网络课程论文:《浅谈交换机、路由器》
  16. Linux下开启FTP的21端口
  17. 一些常用模块的测试用例
  18. 20171204 甲流疫情死亡率
  19. (强烈推荐)移动端音视频从零到上手(转载)
  20. 迅睿cms免费开源系统 v4.3.14

热门文章

  1. 华为nova7pro是鸿蒙系统,华为Nova7与Nova7Pro有什么区别_华为Nova7与Nova7Pro哪个更值得选...
  2. 【Rust日报】2020-08-09:1Paasword Linux版本
  3. JVM垃圾回收器之Shenandoah收集器
  4. 商品过期提醒、食品到期提醒软件、牛奶过期--买迈提过期克星
  5. camunda 及conductor 部署区别
  6. 我送大家两句“名言”
  7. Python字典排序、字典列表排序、嵌套字典排序
  8. Blend for Visual Studio 2017 插入obj格式3D模型
  9. 工作多年一直无法晋升,有啥破解之道?
  10. 电源抑制比【PSRR】