摩尔斯电码转换python编码_Morse Code 用Python做个摩斯密码转换器

摩斯密码摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号,不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个词之间中等的停顿以及句子之间长的停顿。

可以参考以下表格:

abc@foxmailmail.com = .-  -...  -.-.   .--.-.   ..-.----..---.-...-..   .-.-.-   -.-.-----   |  看来摩斯密码十分复杂

一、创建字典

首先,要将字母和摩斯密码都储存在一个字典里。

# 给字典赋值

letter_morse = {"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":"--.."}

print(letter_morse)            # 打印字典

给字典赋值并打印

# 运行结果

('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', '--..')

当然,Python打印了字典,可能并没有如你所愿,因为它只打印了字典而没有实现转换的功能。但这也很正常,因为你并没有告诉计算机如何操作。不过,你已经很好地创建了一个字典,接下来则变得十分简单了。

二、允许用户输入并转换

现在,我们将程序改成允许用户输入的。

直接加个input()函数就行了:

Morse_message = ""        # 给Morse_message赋值为空的

letters =input("Enter the words: \n")        # 允许用户输入

print(letters)        # 打印需要转换的明文

# 运行结果

Enter the words:

并没有发生什么事

并没有发生什么事

程序并没有发生什么事, 因为我们还没有输入指令。

再添加几行:

for letter in letters:

if letter not in letter_morse:

print("Couldn't find '" + letter +"'. ")

elif letter in letters:

Morse_message += letter_morse[letter] +' '

print(Morse_message)

# 运行结果

Enter the words:

hello

Okay:

.... . .-.. .-.. ---

可以看到,我们已经成功地完善了 “摩斯密码转换器” 。

不过你会发现,如果你输入大写字母,它会输出 Couldn't find 输入的大写字母。如何解决呢?只要在 “ letters =input("Enter the words: \n") ” 这行的末尾添上 “ .lower() ” 函数就大功告成了。

三、整合

完整的代码如下。

letter_morse = {"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":"--..",

" ":"  "}

Morse_message = ""

letters =input("Enter the words: \n").lower()

for letter in letters:

if letter not in letter_morse:

print("Couldn't find '" + letter +"'. ")

elif letter in letters:

Morse_message += letter_morse[letter] + ' '

print("Okay: \n" + Morse_message)

希望对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS动画 | 用TweenMax实现收集水滴效果

之前在CodePen上接触了TweenMax, 被它能做到的酷炫效果震撼了. (文末放了5个GSAP的效果GIF) 最近要做一个"收集水滴"的动效, 于是就试用了一下TweenMax实现这个效果. 什么是TweenMax TweenMax是GSAP(GreenSock Animation Platform)创作的动画工具库. GSAP的产品除了T…

React中的组件通信——父传子、子传父、Context

0、认识组件间的通信 在开发过程中,我们会经常遇到需要组件之间相互进行通信: 比如App可能使用了多个Header,每个地方的Header展示的内容不同,那么我们就需要使用者传递给Header一些数据,让其进行展示;又比…

python控制步进电机驱动器_树莓派操作案例1-使用python GPIO+TB6612驱动步进电机

原理图:接口说明A控制信号输入------PWMA VM ------电机驱动电压输入端(4.5V-15V)A电机输入端2 ------AIN2 VCC ------逻辑电平输入端(2.7V-5.5V)A电机输入端1 ------AIN1 GND ------ 接地正常工作/待机状态控制端------STBY …

遍历输出所有子视图(View)

传入一个View,可以获取传入视图的所有子视图,写入桌面,可以在火狐浏览器下查看 /*** 程序获得了焦点就会自动调用这个方法(只要程序获得了焦点,所有控件才能接收触摸事件)*/ - (void)applicationDidBecomeActive:(UIApplication *)application {NSStrin…

React ref的转发

在前面学习ref时讲过,ref不能应用于函数式组件: 因为函数式组件没有实例,所以不能获取到对应的组件对象 但是,在开发中我们可能想要获取函数式组件中某个元素的DOM,这个时候我们应该如何操作呢? 方式一&…

python tkinter 输入数字 小数_Python3 tkinter基础 Entry validate isdigit 只能输入数字的输入框...

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-1Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""from tkinter import *def test(…

电脑桌面 IE 图标删除不了的解决方法

电脑换了系统之后想把桌面的IE浏览器给删掉,可是直接删除又删不掉,杀毒软件查杀也没有问题。找了很多方法,终于才把它给解决了。下面,就把我的方法分享给桌面ie图标删除不了的解决方法,希望能对大家有所帮助! 方法 1 1…

React Portals的使用

某些情况下,我们希望渲染的内容独立于父组件,甚至是独立于当前挂载到的DOM元素中(默认都是挂载到id为root的DOM元 素上的)。 Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案: 第一个参数&a…

绿盟防火墙配置手册_双链路环境下不同品牌防火墙更换案例分享

关注“IT实战基地”,与行业大咖交流学习!引言不同品牌防火墙在整体更换时,实施迁移时除了将防火墙的接口IP地址,路由,安全策略进行迁移时,在实际更换时还可能遇到一切奇怪的问题,尤其是在双链路…

React中的fragment和StrictMode

一、fragment 在之前的开发中,我们总是在一个组件中返回内容时包裹一个div元素: 我们又希望可以不渲染这样一个div应该如何操作呢? 使用FragmentFragment 允许你将子列表分组,而无需向 DOM 添加额外节点; React还…

怎么让车辆gps定位失效_如何更有效地检测车辆gps定位器?

GPS定位器可以帮助我们管理我们心爱的汽车,在任何时候定位和查询车辆的位置,并跟踪车辆防盗,一些汽车公司和公共交通企业也可以管理和调度车队,管理数据,并根据GPS定位器分析数据,实现智能和现代交通。GPS定…

云平台需要开发的底层功能

1、WEB与手机的消息通讯 http://www.rongcloud.cn/docs/web.html 可以实现各种系统消息的WEB和手机同时接收。 2、扩展底层支持幼儿,基础,职业,高师全领域,从人员,机构,部门,院系,专…

React中的CSS——styled-components

一、认识CSS in JS 实际上,官方文档也有提到过CSS in JS这种方案: https://zh-hans.reactjs.org/docs/faq-styling.html “CSS-in-JS” 是指一种模式,其中 CSS 由 JavaScript 生成而不是在外部文件中定义;注意此功能并不是 Reac…

l380废墨收集垫已到使用寿命_湖北雨水收集系统定制

淮北海聚环保设备有限公司为您详细解读jrWVof湖北雨水收集系统定制的相关知识与详情, 1、三格化粪池,可设想为长方形或圆形。各粪池容积计较根据粪水储存时间定,即一般可按2:1:3计较。号池储存20天,2…

React脚手架学习笔记

一、前端工程的复杂化 如果我们只是开发几个小的demo程序,那么永远不需要考虑一些复杂的问题: 比如目录结构如何组织划分;比如如何管理文件之间的相互依赖;比如如何管理第三方模块的依赖;比如项目发布前如何压缩、打包…

access集团和abm_abm年度盛典,12月份,中国、澳大利亚、新西兰三地同时举办,abm各渠道运营商从全球各地赶来参会!...

十二月 ,abm的各路年会分别在中国、澳大利亚、新西兰三国同时举办,abm各渠道运营商,从全球各地起来参会,先欣赏下abm全球年度盛典新西兰分会场中国区会场在abm中国区总部杭州举办,这次特别邀请了蔡康永,从上…

隐藏Android下的虚拟按键

隐藏Android下的虚拟按键 要隐藏Android下的虚拟按键,可通过如下办法操作 [cpp] view plaincopy adb root adb remount adb shell ls -al /system/build.prop (查看文件权限) -rw-r--r-- root root 4237 2015-11-19 04:34 build.prop adb …

医学影像设备学_2020考研:影像大咖告诉你,学影像,就业好,不求人。

医学学科里,有一门专业:医学影像,一直处于比较尴尬的地位:虽然是诊断医生,有执业医生证及大型设备上岗证,但是在同行眼里却是技师、拍片儿的。但是,最近几年医学影像专业迅速崛起,成…

React中添加class——借助第三方库classnames

一、vue中添加class vue中添加class是一件非常简单的事情: 你可以通过传入一个对象: 你也可以传入一个数组: 甚至是对象和数组混合使用: 二、React中添加class React在JSX给了我们开发者足够多的灵活性,你可以…

聊聊微服务架构

1. 微服务架构概念解析 2. 构建微服务架构:使用 API Gateway 3. 深入微服务架构的进程间通信 4. 服务发现的可行方案以及实践案例 5. 微服务的事件驱动数据管理 6. 选择微服务部署策略 7. 将单体应用改造为微服务 首先让我们了解为何要将微服务纳入考量。 构建单体应…