学习python,每日练习20200827

字符串的切片和合并


#题目来源: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!

你可能感兴趣的:(每日一题,python)