我需要编写一个可以使用莫尔斯代码对消息进行编码/解码的程序。
要对消息进行编码,程序需要读取包含字母数字字符的输入文件,然后输出相应的莫尔斯编码消息。
要解码消息,程序将使用摩尔斯电码读取文件,然后输出字母数字字符。
这是我到目前为止所做的,但我无法正确解码:
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.我做错了什么?
答案 0 :(得分: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]