Python:每日一题 44

2017-11-27 13:30:00
六月
来源:
Python:每日一题 44
转贴 613
今日的题目是制作一个简单的摩斯码解码器。
摩斯码由"."和“-”组成,我在下面也为各位做好了,摩斯码常用的字母,标点的映射表。

MORSE_CODE = {'.-...': '&', '--..--': ',', '....-': '4', '.....': '5', '...---...': 'SOS', '-...': 'B', '-..-': 'X', '.-.': 'R', '.--': 'W', '..---': '2', '.-': 'A', '..': 'I', '..-.': 'F', '.': 'E', '.-..': 'L', '...': 'S', '..-': 'U', '..--..': '?', '.----': '1', '-.-': 'K', '-..': 'D', '-....': '6', '-...-': '=', '---': 'O', '.--.': 'P', '.-.-.-': '.', '--': 'M', '-.': 'N', '....': 'H', '.----.': "'", '...-': 'V', '--...': '7', '-.-.-.': ';', '-....-': '-', '..--.-': '_', '-.--.-': ')', '-.-.--': '!', '--.': 'G', '--.-': 'Q', '--..': 'Z', '-..-.': '/', '.-.-.': '+', '-.-.': 'C', '---...': ':', '-.--': 'Y', '-': 'T', '.--.-.': '@', '...-..-': '$', '.---': 'J', '-----': '0', '----.': '9', '.-..-.': '"', '-.--.': '(', '---..': '8', '...--': '3'}

摩斯码在实际编写时,字母与字母间由1个空格进行分割,单词和单词间,由3个空格进行分割。例如:
  1. .... . -.--   .--- ..- -.. .
  2. 就是HEY JUDE对应的摩斯码
复制代码


现在请给出函数:
  1. def decodeMorse(morseCode):
  2.     # ToDo: Accept dots, dashes and spaces, return human-readable message
复制代码


注意:出现在摩斯码首尾的空格均为无效字符。

顺便说一句,这个题目是3题一套,难度递增,这是最简单的第一道。后两道,我会随后放出(内容有点多,翻译有点困难),如果可能你最好先保存这次的代码,将来或许用得上。(其实我也不知道后面用不用得上)

测试:
  1. test.assert_equals(decodeMorse('.... . -.--   .--- ..- -.. .'), 'HEY JUDE')
  2. test.assert_equals(decodeMorse(' . '), 'E')
  3. test.assert_equals(decodeMorse('...---...'), 'SOS')
  4. test.assert_equals(decodeMorse('      ...---... -.-.--   - .... .   --.- ..- .. -.-. -.-   -... .-. --- .-- -.   ..-. --- -..-   .--- ..- -- .--. ...   --- ...- . .-.   - .... .   .-.. .- --.. -.--   -.. --- --. .-.-.-  '), 'SOS! THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.')
发表评论
评论通过审核后显示。