python解决摩尔斯电码
文章目录
- 前言
- 一、题目说明
- 二、代码展示
- 三、代码分析
- 1. str.maketrans()
- 2. 以二进制位基数格式化输出
- 四、总结
前言
前一段时间逛checkio,又发现一个有意思的题,是关于摩尔斯电码的。其实题本身素质一般,只是看到一个大佬的解法,真是让我大开眼界,学了很多。
一、题目说明
题目要求很简单,将一段时间格式的字符串转换为摩尔斯密码,转换规则见下图:
每一位都由不同长度的小球表示,灰色小球表示1,也就是True,白色球表示0,也就是False。不同的长度对应的数字分别是2的n次方:1, 2, 4, 8。
最后,1用-替换,0用.替换,连接起来就是一段摩尔斯密码了。
例如,“10 : 37 : 49”,可以用"01 0000 :011 0111 : 100 1001"表示,再转换一下,就是".- … : .-- .— : -… -…-"。
如果某一位只有一位数字,用0补齐,例如" 11 : 1 : 12"要转换为"11 : 01 : 12"。
好了,有关题目的介绍就到这里了,大家要不要试着编写一下函数,实现任意时间字符串的转换!
二、代码展示
下面直接展示一个我认为比较厉害的代码,也是网站获赞比较高的:
TO_MORSE = str.maketrans('01', '.-')def to_morse(number, bits):"""Return number in binary-Morse as a string with the given number of bits."""return "{0:0{1}b}".format(number, bits).translate(TO_MORSE)def to_code(field):"""Return a space-delimited string of binary-Morse digits."""tens, ones = divmod(int(field), 10)return "{} {}".format(to_morse(tens, 3), to_morse(ones, 4))def checkio(data):"""Return a string representing the time in a Morse code-like form."""return ' : '.join(map(to_code, data.split(':')))[1:] # Strip leading .if __name__ == '__main__': assert checkio("10:37:49") == ".- .... : .-- .--- : -.. -..-", "First Test"assert checkio("21:34:56") == "-. ...- : .-- .-.. : -.- .--.", "Second Test"assert checkio("11:10:12") == ".- ...- : ..- .... : ..- ..-.", "Third Test"assert checkio("23:59:59") == "-. ..-- : -.- -..- : -.- -..-", "Fourth Test"
三、代码分析
1. str.maketrans()
此函数实现字符串之间的相互转换,类似replace,区别是可以一次转换多个字符,需要借助translate()
方法。用法如下:
>>> intab = "aeiou"
>>> outtab = "12345"
>>> test = "this is a test string"
>>> trans = str.maketrans(intab, outtab)
>>> result = test.translate(trans)
>>> print(result)
th3s 3s 1 t2st str3ng
2. 以二进制位基数格式化输出
另一个巧妙的方法是,通过"{0:0{1}b}".format(number, bits)"
直接快速的以二进制形式输出了0,1格式的字符串。
四、总结
这个题自认为不是很难,怎奈自己没有想到最重要的二进制格式化输出,导致走了弯路。因此在此记录,与大家一同分享一下。
python解决摩尔斯电码相关推荐
- Python实现摩尔斯电码和英文互译
前段时间看到了一个科普摩尔斯电码的博客,感觉挺好玩的,就想着写一个翻译摩尔斯电码的小程序,懒了好几天了,一直没写,今天终于完成了 代码如下 code_dict = {'A': '.-', 'B': ' ...
- 牛逼了!用Python实现摩尔斯电码翻译器,网友:“怎么敲我爱你?”
莫尔斯电码是一种将文本信息作为一系列开,关的音调,灯光或咔嗒声进行传输的方法,熟练的听众或观察者无需特殊设备即可直接理解.它以电报的发明者塞缪尔·FB·莫尔斯(Samuel FB Morse)的名字命 ...
- 摩尔斯电码_摩尔斯电码二叉树和baader meinhof现象
摩尔斯电码 The other night I was watching some videos by 2 Youtube channels I really like. The first one ...
- 摩尔斯电码转换python编码_Morse Code 用Python做个摩斯密码转换器
摩斯密码摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母.数字和标点符号,不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种 ...
- 摩尔斯电码转换python编码_摩尔斯电码到英文python3
我想用Python 3将摩尔斯电码转换成英文 我已经设法使用这个将英语转换成莫尔斯码 http://code.activestate.com/recipes/578407-simple-morse-c ...
- 摩尔斯电码转换python编码_python转换字符串为摩尔斯电码的方法
python转换字符串为摩尔斯电码的方法 本文实例讲述了python转换字符串为摩尔斯电码的方法.分享给大家供大家参考.具体实现方法如下: chars = ",.0123456789?abc ...
- 摩尔斯电码转换的小程序【python编写】
摩尔斯电码转换的小程序 博主是一个刚刚接触生信的新手,正在学习Linux和Python,平时会发布一些自己练手的脚本,用来记录自己的学习之路. 介绍 下面是一个用python写的进行英语和摩尔斯电码转 ...
- 利用python实现将文本、摩尔斯电码与用滴答表示的摩尔斯电码三者相互转换
文章目录 目录 前言 一.摩尔斯电码的对照表: 二.python代码的完整展示 三.代码运行结果的展示: 四.总结与注意事项 前言 本文的代码主要通过字典与反转字典,实现摩尔斯电码与文本的相互转换,并 ...
- python字典表示摩尔斯电码_python转换字符串为摩尔斯电码的方法
本文实例讲述了python转换字符串为摩尔斯电码的方法.分享给大家供大家参考.具体实现方法如下: chars = ",.0123456789?abcdefghijklmnopqrstuvwx ...
最新文章
- TPAMI 2022 | 国防科大等高校提出光场解耦机制,在超分辨与视差估计任务上取得优异性能...
- C运行时库和标准C++库
- 【Python】Matplotlib 可视化必备神书,附pdf下载
- golang grpc demo
- C语言多维数组与多级指针
- NumPy 秘籍中文第二版·翻译完成
- 【钉钉PC】PC端钉钉清除缓存
- JavaScript(js)概述和使用
- 9.20PMP每日一题
- 机器学习基础(二十一)—— 分类与回归、生成模型与判别模型
- 张云飞 201771010143 《面对对象程序设计(java)》第十七周学习总结
- easyui datagrid 动态绑定列
- 组态软件mcgs入库mysql_MCGS组态软件实现数据报表
- 如何解密网易ncm/qq音乐的qmcflac/酷狗kgm等加密格式转换成MP3
- QT学习回顾(二)界面布局及其控件设计
- selenium滑块操作(基础)
- RocketMQ 监控平台搭建与项目引入
- 回忆我的过去一年2020年考研以及研究生规划
- linux安装frps服务,ubuntu搭建frps服务
- 分页封装实用工具类及其使用方法