【python解题笔记20210316】CodeWars:Decode the Morse code

题目

内容:编写一个函数,入参为莫斯密码,出参为解析后的字符串

链接:https://www.codewars.com/kata/54b724efac3d5402db00065e/train/python

截图:

 

 

 

解题

思路:

 

1、由于传入的入参前后可能有空格,需要进行前后空格过滤。使用strip()方法。

2、莫斯密码的规则是,不同的单词使用3个空格分隔,不同的字母使用1个空格分隔。需检测3个空格、1个空格,分隔字符串为列表,使用split('   ')方法;

3、分隔传入的莫斯密码到字母级别后,使用MORSE_CODE['.--']方法解析出每个字母;

4、将解析成的每个字母,通过append函数追加到空列表中;

5、由于上述得到的结果还是以每个单词为维度的列表,需使用join()方法将列表转换成字符串;

 

结果:

 

 

源码:

def decodeMorse(morse_code):
    # ToDo: Accept dots, dashes and spaces, return human-readable message
    word=morse_code.strip().split('   ') #先过滤1、前后的空格,使用strip();2、传入莫斯密码的单词分隔符,即三个空格,使用split('   ')
    print(word)  
    resultcharacter=[]     #接收解析字符串
    for i in word:      #此时的i已经是一个单词了,word则为多个单词的列表
        character=i.split(' ')       #过滤1个单词中的空格,过滤传入莫斯密码的字母分隔符,即单个空格
        print(character)
        for j in character:  
            resultcharacter.append(MORSE_CODE[j])   #莫斯解密已经分隔好的字母,并追加到空列表中
            pass
        resultcharacter.append(' ')   #每1个单词后面追加1个空格
        pass
    print(resultcharacter)

        
    resultword=''.join(resultcharacter).strip()    #将列表形式的内容,通过join方法转换成字符串,并且通过strip方法去掉最后多余的空格
    print(resultword)            
                    
    return resultword

 

 

知识点

1、strip()函数用于字符串头部和尾部的指定字符串,默认为空格或换行符。

2、split()函数的用法是拆分字符串,然后把分割之后的字符串放到一个列表里并返回。默认情况下是根据换行符"\n"和空格" ",以及“\t”进行分割。

3、append()函数用于在列表末尾添加新的对象。

4、join()函数用于将序列中的元素以指定的字符连接生成一个新的字符串

 

 

参考资料:

https://www.cnblogs.com/geeksongs/p/13050175.html

https://www.runoob.com/python/att-list-append.html

https://www.runoob.com/python3/python3-string-join.html

 

posted @ 2021-03-16 12:32  chooperman  阅读(220)  评论(0编辑  收藏  举报