字符串的切片和合并
#题目来源:https://fishc.com.cn/forum.php?mod=viewthread&tid=87150
'''
今日的题目是制作一个简单的摩斯码解码器。
摩斯码由"."和“-”组成,我在下面也为各位做好了,摩斯码常用的字母,标点的映射表。
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个空格进行分割。例如:
.... . -.-- .--- ..- -.. .
就是HEY JUDE对应的摩斯码
复制代码
现在请给出函数:
def decodeMorse(morseCode):
# ToDo: Accept dots, dashes and spaces, return human-readable message
复制代码
注意:出现在摩斯码首尾的空格均为无效字符。
顺便说一句,这个题目是3题一套,难度递增,这是最简单的第一道。后两道,我会随后放出(内容有点多,翻译有点困难),如果可能你最好先保存这次的代码,将来或许用得上。(其实我也不知道后面用不用得上)
'''
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'}
def decodeMorse(morseCode):
result=[]
#去掉头和尾部的空格
morseCode = morseCode.strip()
#调用split()方法将传入的morseCode 先按照三个空格进行切片
lst_three = morseCode.split(' ')
for i in lst_three:
# 调用split()方法将传入的morseCode 先按照一个空格进行切片,得到key值
lst_one = i.split(' ')
#将lst_one 合并为一个单词
temp_he = ''
for j in lst_one:
temp_he += MORSE_CODE[j]
result.append(temp_he)
return ' '.join(result)
def assert_equals(func, target, *args):
if (func == target):
print('SUCC!')
else:
print('Fail! {0} not equals {1} '.format(func,target))
print(*args)
assert_equals(decodeMorse('.... . -.-- .--- ..- -.. .'), 'HEY JUDE')
assert_equals(decodeMorse(' . '), 'E')
assert_equals(decodeMorse('...---...'), 'SOS')
assert_equals(decodeMorse(' ...---... -.-.-- - .... . --.- ..- .. -.-. -.- -... .-. --- .-- -. ..-. --- -..- .--- ..- -- .--. ... --- ...- . .-. - .... . .-.. .- --.. -.-- -.. --- --. .-.-.- '), 'SOS! THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.')
结果:
SUCC!
SUCC!
SUCC!
SUCC!