【发布时间】:2021-09-17 22:46:10
【问题描述】:
我一直在做一个莫尔斯电码翻译器,我刚刚遇到了翻译莫尔斯电码的问题。 这是我的代码:
def translate(self, message):
message_words = message.split(' ')
message_in_morse = ['Your message is: ']
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', '.----':'1', '..---':'2', '...--':'3', '....-':'4', '.....':'5', '-....':'6', '--...':'7', '---..':'8', '----.':'9', '-----':'0', '..--..':'?', '.-.-.-':'.', '--..--':',', ' ':' ', ' ':''}
morse_text = ''
for letter in message_words:
message_in_morse.append(letters.get(letter.lower()))
message_in_morse.append(' ')
try:
morse_text = ''.join(message_in_morse)
except Exception as e:
print('Error: ', str(e))
return morse_text
我正在导入它并运行translate('.- .-')
从另一个程序。
这应该输出:
Your message is: aa
当我运行它时,它只是说:
Error: sequence item 1: expected str instance, NoneType found
我不知道这意味着什么或如何解决它。
【问题讨论】:
-
您正在尝试使用空变量。
-
请提供可运行的minimal reproducible example。
-
letters.get返回None当在字典中找不到密钥时,您将其附加到列表中,这就是后来导致异常的原因。 -
如果找不到字母,请使用默认值:
message_in_morse.append(letters.get(letter.lower(), ''))此外,您可以摆脱try/except块。 -
@Pazzel:是的。
message.split(' ')...message中没有 4 个 blancs ...
标签: python