You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

摩尔斯电码解码多单词无空格问题及字符串拆分方案咨询

摩尔斯电码解码函数修复:单词间空格缺失问题

我正在编写一个摩尔斯电码解码函数,输入包含多个单词的摩尔斯电码字符串时(例如".... . -.-- .--- ..- -.. ."应解码为HEY JUDE),我的代码返回的结果却是HEYJUDE,没有实现单词间的空格分隔。请问该如何修复?

原代码

def reverse(message):
    message = message.split()
    msg = ''
    for item in message:
        for k, v in MORSE_CODE_DICT.items():
            if v == item:
                msg += k
    print(msg)

问题原因与修复方法

你的代码用message.split()会把所有连续空格(包括单词间的三个空格)统一处理成分隔符,导致无法区分字符间的单个空格和单词间的三个空格,自然没法保留单词间隔。下面是具体修复方案:

修复思路

  1. 先按三个连续空格拆分输入字符串,得到每个单词对应的摩尔斯码片段
  2. 对每个单词片段,再按单个空格拆分出单个字符的摩尔斯码
  3. 解码每个字符后拼接成单词,最后用空格连接所有解码后的单词

修复后的代码

def reverse(message):
    # 按三个空格拆分出各单词的摩尔斯码
    word_morse_parts = message.split('   ')
    decoded_words = []
    for part in word_morse_parts:
        # 按单个空格拆分出单个字符的摩尔斯码
        char_morse_list = part.split()
        decoded_word = ''
        for char_morse in char_morse_list:
            # 匹配对应字符
            for k, v in MORSE_CODE_DICT.items():
                if v == char_morse:
                    decoded_word += k
                    break  # 找到后终止循环,提升效率
        decoded_words.append(decoded_word)
    # 用空格连接所有单词
    final_result = ' '.join(decoded_words)
    print(final_result)

额外优化:提升解码效率

每次遍历整个字典查找字符效率偏低,可以预先把原字典反转成“摩尔斯码→字符”的映射表,直接通过键值对读取:

# 预先生成反转字典,避免重复遍历
MORSE_TO_CHAR = {v: k for k, v in MORSE_CODE_DICT.items()}

def reverse(message):
    word_morse_parts = message.split('   ')
    decoded_words = []
    for part in word_morse_parts:
        # 一行完成单个单词的解码
        decoded_word = ''.join([MORSE_TO_CHAR[char] for char in part.split()])
        decoded_words.append(decoded_word)
    final_result = ' '.join(decoded_words)
    print(final_result)

内容的提问来源于stack exchange,提问作者Alexandru_Ghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:24:47