-1

我需要编写一个可以使用摩尔斯电码编码/解码消息的程序。

要对消息进行编码,程序需要读取包含字母数字字符的输入文件,然后输出相应的莫尔斯编码消息。

要解码消息,程序将读取带有摩尔斯电码的文件,然后输出字母数字字符。

这是我到目前为止所拥有的,但我无法正确解码:

import string

def to_from(text, dict_in):
    for i in text:
        if i.upper() in dict_in:
            print "%6s" % (dict_in[i]),
        else:
            print i, "not in dictionary"
    print

letters = {'A': '*-',     'B': '-***',   'C': '-*-*', 
        'D': '-**',    'E': '*',      'F': '**-*',
        'G': '--*',    'H': '****',   'I': '**',
        'J': '*---',   'K': '-*-',    'L': '*-**',
        'M': '--',     'N': '-*',     'O': '---',
        'P': '*--*',   'Q': '--*-',   'R': '*-*',
        'S': '***',    'T': '-',      'U': '**-',
        'V': '***-',   'W': '*--',    'X': '-**-',
        'Y': '-*--',   'Z': '--**',
        '0': '-----',  '1': '*----',  '2': '**---',
        '3': '***--',  '4': '****-',  '5': '*****',
        '6': '-****',  '7': '--***',  '8': '---**',
        '9': '----*' 
        }

frommorse = dict((b,a) for a,b in letters.items())
text = raw_input('What is the translation you need?\n')
text=text.strip()

if text[0] in string.letters:
    to_from(text, letters)
else:
    to_from(text, frommorse)

当我尝试解码 *- 时,它会打印“E T”而不是 A。我做错了什么?

4

1 回答 1

1

要将字符串编码为莫尔斯电码,请尝试此

 APNU = {'A': '.-',     'B': '-...',   'C': '-.-.', 
        'D': '-..',    'E': '.',      'F': '..-.',
        'G': '--.',    'H': '....',   'I': '..',
        'J': '.---',   'K': '-.-',    'L': '.-..',
        'M': '--',     'N': '-.',     'O': '---',
        'P': '.--.',   'Q': '--.-',   'R': '.-.',
        'S': '...',    'T': '-',      'U': '..-',
        'V': '...-',   'W': '.--',    'X': '-..-',
        'Y': '-.--',   'Z': '--..',
        '0': '-----',  '1': '.----',  '2': '..---',
        '3': '...--',  '4': '....-',  '5': '.....',
        '6': '-....',  '7': '--...',  '8': '---..',
        '9': '----.' 
        }


string = 'yourstring'
for char in string:
    print APNU[char.upper()]

或者

[APNU[char.upper()] for char in string]
于 2015-04-12T08:57:51.690 回答