我的python摩尔斯电码解码器在输入SOS时中断

2024-09-25 02:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个电码战练习,我应该写一个莫尔斯电码解码器。到目前为止,我已经写了以下内容:

    # ToDo: Accept dots, dashes and spaces, return human-readable message
    podzielone = morse_code.split(' ')
    alfabetmorsa = {'.-':'A', '-...':'B', '-.-.':'C', '-..':'D', '.':'E', '..-.':'F', ' ':' ', '--.':'G', '....':'H', '..':'I', '.---':'J', '-.-':'K', '.-..':'L', '--':'M', '-.':'N', '---':'O', '.--.':'P', '.-.':'R', '...':'S', '-':'T', '..-':'U', '...-':'V', '-..-':'X', '-.--':'Y', '--..':'Z', '...---...':'SOS'}
    wynikz = [alfabetmorsa.get(n, n) for n in podzielone]
    wynik = ' '.join(wynikz)
    wynik = wynik.replace('', '')[::2]
    return wynik

程序应该将SOS(...---...)识别为单独的字符,但它会使O在输出中消失。如果我从第二行到最后一行删除[::2],SOS可以工作,但每个字母都用空格隔开。我怎样才能做到这一点


Tags: and电码return解码器todospacesdotshuman
1条回答
网友
1楼 · 发布于 2024-09-25 02:37:22

您可以在空字符串上进行连接,而不是在空格上进行连接,并去掉[::2]

def morse_to_text(morse_code):
    podzielone = morse_code.split(' ')
    alfabetmorsa = {'.-':'A', '-...':'B', '-.-.':'C', '-..':'D', '.':'E', '..-.':'F', ' ':' ', ' .':'G', '....':'H', '..':'I', '. -':'J', '-.-':'K', '.-..':'L', ' ':'M', '-.':'N', ' -':'O', '. .':'P', '.-.':'R', '...':'S', '-':'T', '..-':'U', '...-':'V', '-..-':'X', '-. ':'Y', ' ..':'Z', '... -...':'SOS'}
    wynikz = [alfabetmorsa.get(n, n) for n in podzielone]
    # this is now ''.join()
    wynik = ''.join(wynikz)
    # no more [::2] needed
    return wynik

相关问题 更多 >