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

使用字典实现摩尔斯电码转英文遇匹配问题求助

摩尔斯电码转英文异常的解决方案

看起来你踩了一个很典型的映射方向错误的坑!问题的核心在于:你用来做翻译的字典是英文→摩尔斯的(键是英文字母,值是对应的摩尔斯码),但当你要把摩尔斯转英文时,需要的是摩尔斯→英文的反向映射——不然程序根本找不到完整的".-"对应的字母,反而会把单个字符"."当成E的摩尔斯码(刚好E的摩尔斯就是"."),所以才会输出E。

下面是具体的修正方案,帮你搞定双向翻译:

1. 构建双向映射字典

先保留你已有的英文转摩尔斯字典,再通过推导式生成反向的摩尔斯转英文字典:

# 基础英文→摩尔斯字典(你已经实现的部分)
eng_to_morse = {
    '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': '--..', '0': '-----', '1': '.----', '2': '..---',
    '3': '...--', '4': '....-', '5': '.....', '6': '-....',
    '7': '--...', '8': '---..', '9': '----.'
}

# 反向生成摩尔斯→英文字典,这是解决问题的关键
morse_to_eng = {morse_code: char for char, morse_code in eng_to_morse.items()}

2. 实现摩尔斯转英文的正确逻辑

摩尔斯码的字符之间是用空格分隔的,所以我们需要先把输入的字符串按空格分割成单个摩尔斯码单元,再逐个去反向字典里匹配:

def translate_morse_to_english(morse_input):
    # 分割输入为独立的摩尔斯码单元
    morse_units = morse_input.split()
    translated_chars = []
    for unit in morse_units:
        # 用get方法避免找不到对应码时抛出错误,默认返回'?'
        translated_chars.append(morse_to_eng.get(unit, '?'))
    return ''.join(translated_chars)

3. 整合双向翻译功能

把你已有的英文转摩尔斯逻辑和上面的代码整合,让程序可以支持双向翻译:

def translate_english_to_morse(eng_input):
    translated_code = []
    for char in eng_input.upper():
        translated_code.append(eng_to_morse.get(char, '?'))
    return ' '.join(translated_code)

# 主交互逻辑
print("=== 摩尔斯电码互译工具 ===")
choice = input("请选择翻译方向:\n1. 英文 → 摩尔斯电码\n2. 摩尔斯电码 → 英文\n输入数字选择:")

if choice == '1':
    message = input("请输入要翻译的英文消息:")
    print(f"翻译结果:{translate_english_to_morse(message)}")
elif choice == '2':
    message = input("请输入要翻译的摩尔斯电码(字符间用空格分隔):")
    print(f"翻译结果:{translate_morse_to_english(message)}")
else:
    print("无效选择,请重新运行程序!")

现在测试一下:输入".-",程序会正确输出"A";输入".... . .-.. .-.. ---",会输出"HELLO",完全符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:40:13