【问题标题】:What does NoneType actually mean? [duplicate]NoneType 实际上是什么意思? [复制]
【发布时间】: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


【解决方案1】:

我发现了如何让它工作。 使用嵌套的for 循环将消息拆分为单词,然后将每个单词拆分为单独的字母。

        message_words = message.split('   ')
        letters_in_message = []
        for word in message_words:
            letters_in_message.append(word.split(' '))
        message_in_morse = ['Your message: ']
        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 word in letters_in_message:
            for letter in word:
                message_in_morse.append(letters.get(letter.lower(), '#'))
            message_in_morse.append(' ')
        morse_text = ''.join(message_in_morse)
        return morse_text

【讨论】:

    【解决方案2】:

    你的尝试/除了让我困惑了一段时间。

    不过,我还是设法找到了您的错字:

    def translate(self, message):
        message_words = message.split(' ')  # split by one space
        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()))
        try:
            morse_text = ''.join(message_in_morse)
        except Exception as e:
            print('Error: ', str(e))
        return morse_text
    print(translate('.- .-'))
    

    输出:

    Your message is: aa 
    

    另外,你应该尝试允许无效的莫尔斯:

    message_in_morse.append(letters.get(letter.lower(), '#'))

    这将为任何未知的莫尔斯电码提供#

    更新:删除了解码字符之间的多余空格。

    【讨论】:

    • 这就像一个类似的评论。当我在摩尔斯电码中使用空格运行它时,它只会输出Your message is: #
    • 但这不是你的问题。你想要“a a”作为输出,我解决了这个问题
    • 我想翻译 .- .-,应该给我一个 aa。现在它给了我#
    • 用我的代码我得到Your message is: a a
    • 它现在也适合我,但它仍然应该给Your message is: aa,而不是Your message is: a a
    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多