将摩尔斯电码翻译成英文而不添加额外的字典

时间:2018-05-06 04:05:47

标签: python-3.x dictionary

我正在制作一个英语到摩尔斯电码,反之亦然。我成功地将英语翻译成摩尔斯电码,但在将莫尔斯电码翻译成英语方面遇到了麻烦。每当我尝试将莫尔斯代码翻译成英语时,它都会给我一个TypeError:“text =''。join(map(trans_back.get,user_input)) TypeError:序列项0:预期的str实例,找到NoneType“。

到目前为止,这是我的代码。最后一部分是我遇到问题的代码的一部分:

translation = {
"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": "--.. ",
"1": ".---- ",
"2": "..--- ",
"3": "...-- ",
"4": "....- ",
"5": "..... ",
"6": "-.... ",
"7": "--... ",
"8": "---.. ",
"9": "----. ",
"0": "----- ",
".": ".-.-.- ",
",": "--..-- ",
"?": "..--.. ",
"!": "..--. ",
"/": "-..-. ",
"@": ".--.-. ",
" ": " "
}

user_input = input("Input english or morse code message:\n").upper()

if all(c in translation for c in user_input):
    morse = ''.join(map(translation.get, user_input))
    print(morse)
elif all(c in ".- " for c in user_input):
    print("*needs work in order to change morse to text*")
    #trans_back = {v: k for k, v in translation.items()}
    #text = ''.join(map(trans_back.get, user_input))
    #print(text)

1 个答案:

答案 0 :(得分:0)

两个块之间的区别在于第一个块需要逐个字符映射,但第二个块需要将一个字符块映射到单个键。您需要在空格中拆分user_input,以便map将该函数应用于表示单个键的.-组。当然,您还需要从反向字典查找中删除空格。这是我开始工作的代码:

elif all(c in ".- " for c in user_input):
    trans_back = {v.rstrip(' '): k for k, v in translation.items()}
    text = ''.join(map(trans_back.get, user_input.split(' ')))
    print(text)