意义:简单实现摩斯码的破译和生成

代码:

#-*- coding: UTF-8 -*-

__author__ = ''
__date__ = '2016/2/2' import pprint
import re chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
codes = """.- -... -.-. -.. . ..-. --. .... .. .--- -.- .-..
-- -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --..
.---- ..--- ...-- ....- ..... -.... --... ---.. ----. -----""" dd = dict(zip(chars.lower(),codes.split()))
DD = dict(zip(codes.split(),chars.lower())) #pprint.pprint(DD) def chars2morse(char):
return dd.get(char.lower(),' ') def morse2chars(morse):
return DD.get(morse,' ') while True:
str = raw_input()
x = str.split(' ')
ccc = ''.join(x)
if re.match('^[0-9a-zA-Z]+$',ccc):
print ' '.join(chars2morse(c) for c in ccc)
else:
cc = str.split()
print ' '.join(morse2chars(c) for c in cc)

运行结果:

知识点:

split()

意义:通过指定分割符对字符串进行切片

语法:

str.split(str="", num=string.count(str))
  • 参数str:分隔符,默认为空格
  • 参数num:分割次数

返回值:返回分割后的字符串列表

实例:

 In[2]: str = "I Love Python!"
In[3]: str.split()
Out[3]: ['I', 'Love', 'Python!']
In[4]: str.split(' ',1)
Out[4]: ['I', 'Love Python!']

lower()

意义:转换字符串中所有大写字符为小写

语法:

str.lower()

返回值:返回将字符串中所有大写字符转换为小写后生成的字符串

实例:

 In[2]: str = "I Love Python!"
In[5]: str.lower()
Out[5]: 'i love python!'

zip()

意义:Python内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的 list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同

语法:

zip([iterable, ...])
  • 参数:任意多个列表

返回值:有元祖组成的列表

实例:

 In[6]: a = [1,2,3]
In[7]: b = [4,5,6]
In[8]: c = [7,8,9,0]
In[9]: zip(a,b,c)
Out[9]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

利用*号操作符,可以将list unzip(解压)

 In[11]: d = [[1,2,3],[4,5,6],[7,8,9]]
In[12]: zip(*d)
Out[12]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
In[13]: e = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
In[14]: zip(*e)
Out[14]: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

dict()

意义:创建新字典

语法:

dict(iterable, **kwarg)

返回值:返回一个新字典

实例:

 #键值对方式构造字典
In[17]: dict(a=1,b=2,c=3)
Out[17]: {'a': 1, 'b': 2, 'c': 3}
#映射函数方式构造字典
In[18]: dict(zip(['a','b','c'],[1,2,3]))
Out[18]: {'a': 1, 'b': 2, 'c': 3}
#可迭代对象方式构造字典
In[19]: dict([('a',1),('b',2),('c',3)])
Out[19]: {'a': 1, 'b': 2, 'c': 3}

get()

意义:返回字典中指定键的值,如果值不在字典中返回默认值

语法:

dict.get(key, default=None)
  • 参数key:字典中要查找的键
  • default:如果指定键的值不存在时,返回该默认值值

返回值:字典中指定键的值,如果值不在字典中返回默认值None

实例:

 In[23]:  d = {'a': 1, 'b': 2, 'c': 3}
In[24]: d.get('a')
Out[24]: 1
In[25]: d.get('d','Not Found!')
Out[25]: 'Not Found!'

python-摩斯码转换的更多相关文章

  1. Javascript实现摩斯码加密解密

    原文地址 作者:liaoyu 摩尔斯电码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母.数字和标点符号,是由美国人萨缪尔·摩尔斯在1836年发明. 每一个字符(字母或数字)对应不同的 ...

  2. [LeetCode] 804. Unique Morse Code Words 独特的摩斯码单词

    International Morse Code defines a standard encoding where each letter is mapped to a series of dots ...

  3. [LeetCode] Unique Morse Code Words 独特的摩斯码单词

    International Morse Code defines a standard encoding where each letter is mapped to a series of dots ...

  4. uva 508 - Morse Mismatches(摩斯码)

    来自https://blog.csdn.net/su_cicada/article/details/80084529 习题4-6 莫尔斯电码(Morse Mismatches, ACM/ICPC Wo ...

  5. PYTHON的ASCII码转换

    首先,我们要知道ASCII的ord 这个变值,附上代码: c=input("请输入一个字符:") print (c+"的ASCII码为 ".ord(c)) #用 ...

  6. python实现的摩斯电码解码\编码器

    代码地址如下:http://www.demodashi.com/demo/14743.html 详细说明: 现在这年头谍战片.警匪片动不动就用摩斯密码来传递信息,一方面可以用来耍帅,另外一方面好像不插 ...

  7. Python的字符串与字节码转换

    一张图弄懂python的字符串与字节码转换  

  8. python url码转换 chr()码

    爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet ...

  9. 数据分析:基于Python的自定义文件格式转换系统

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

随机推荐

  1. EventBusException:xxxx has no methods onEvent

    使用第三方框架EventBus,在register时出现Exception:xxxx has no methods onEvent. 场景:在Activity中没有接收事件,只是需要发送事件,但是有对 ...

  2. C# for 循环 迭代法 穷举法

    for()循环. 四要素: 初始条件,循环条件,状态改变,循环体. 执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加 ...

  3. Java多线程并发编程之原子变量与非阻塞同步机制

    1.非阻塞算法 非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 -- 例如比较和交换.非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞 ...

  4. Git教程--Git分支管理

    分支管理--原理分析 在前面讲到的版本回退里,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.只有一条时间线的这条分支称为master,HEAD严格来说不是指向提交,而是指向maste ...

  5. box-shadow 给图片添加内部阴影

    box-shadow 是css3中定义的设置元素阴影的属性,其语法结构如下: <shadow> = inset? && <length>{2,4} && ...

  6. Java之线程的生命周期

    在Java中,线程有5中不同状态,分别是:新建(New).就绪(Runable).运行(Running).阻塞(Blocked)和死亡(Dead).它们之间的转换图如下: 上图有一个例外,调用yiel ...

  7. Git 操作常用命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

  8. Oracle EBS-SQL (PO-3):检查期间手工下达的采购订单记录数.sql

    SELECT DECODE(pda.req_distribution_id,'','手工','自动创建') 下达方式, --pda.req_distribution_id                ...

  9. logstorm

    http://blog.itpub.net/15480802/viewspace-688859/ http://www.csdn.net/article/2014-09-04/2821558

  10. makefile编写差异

    由于zlib动态库在linux下引用的问题引出了对于简练的makefile的学习.之前通过看网络上的一些文章自己也算简单了解如何编写一个makefile,可总是不那么美观,今天经过辉哥的指点,对于ma ...