我正在制作一个英语到摩尔斯电码,反之亦然。我成功地将英语翻译成摩尔斯电码,但在将莫尔斯电码翻译成英语方面遇到了麻烦。每当我尝试将莫尔斯代码翻译成英语时,它都会给我一个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)
答案 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)