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

如何基于字典实现英文与摩尔斯码的双向匹配翻译?

实现英文字母与摩尔斯码的双向转换

我来帮你搞定这个双向转换的需求!其实核心就是先建立双向的映射关系,然后判断输入的内容类型,再针对性地完成转换。下面是完整的实现方案:

完整代码实现

# 定义英文字母到摩尔斯码的映射字典(包含所有大写英文字母)
char_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': '--..'
}
# 快速生成反向映射:摩尔斯码到英文字母(避免每次遍历原字典查找,提升效率)
morse_to_char = {v: k for k, v in char_to_morse.items()}

def convert_message():
    # 获取用户输入,统一转成大写并去除首尾空格
    user_input = input("请输入要转换的内容(字母直接输入,摩尔斯码用空格分隔每个字符编码):").strip().upper()
    
    # 判断输入类型:检查是否包含摩尔斯码的特征字符(. 或 -)
    if '.' in user_input or '-' in user_input:
        # 按空格拆分摩尔斯码序列
        morse_codes = user_input.split()
        result = []
        for code in morse_codes:
            # 查找对应字母,无法识别则保留原码并标注
            if code in morse_to_char:
                result.append(morse_to_char[code])
            else:
                result.append(f"[无法识别: {code}]")
        print("转换结果:", ''.join(result))
    else:
        # 处理字母输入,逐个转换
        result = []
        for char in user_input:
            if char in char_to_morse:
                result.append(char_to_morse[char])
            else:
                result.append(f"[无法识别: {char}]")
        print("转换结果:", ' '.join(result))

# 启动转换程序
convert_message()

代码关键点说明

  • 双向映射:用字典推导式生成morse_to_char反向字典,这样查找摩尔斯码对应的字母是O(1)的高效操作,比每次遍历原字典要快得多。
  • 输入兼容处理:用upper()把输入统一转成大写,避免因为用户输入小写字母导致匹配失败;strip()去除输入首尾的多余空格。
  • 错误容错:遇到无法识别的字符或摩尔斯码时,不会直接崩溃,而是保留原内容并标注,方便用户排查问题。
  • 输入判断逻辑:通过检查输入中是否包含.或-来区分摩尔斯码和字母输入,这是最直观的判断方式,符合日常使用习惯。

注意事项

  • 输入摩尔斯码时,必须用空格分隔每个字符的编码,比如输入.- -...会转换成AB;如果不空格分隔(比如.-...),程序会把它当成一个无法识别的摩尔斯码。
  • 如果需要支持数字、标点符号等,可以直接扩展char_to_morse字典,加入对应的摩尔斯码映射即可。

内容的提问来源于stack exchange,提问作者Hunter T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:32:34