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

求助:摩尔斯电码转英文时处理无效符号的正确解决方案

摩尔斯电码转英文:处理无效编码为*的解决方案

问题背景

需求为将摩尔斯电码转换为英文,需保留字母与单词间的特定空格(字母间无空格,单词间用两个空格分隔);当存在无法转换的编码符号时,需将其显示为*。例如输入- .... .. ....... - . .- --,期望输出thi* team。

原代码存在两个核心问题:

  1. 字典定义为eng_dict,但循环中错误使用未定义的morse_eng_dict,会触发NameError
  2. 未实现无效编码替换为*的逻辑,且嵌套循环的写法效率低下

修正后的完整代码

eng_dict = {'.-':    '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'
        }

nomorse = input("Enter your code here: ")
nomorse_list = nomorse.split(' ')
text = []

for item in nomorse_list:
    if item == '':
        # 空字符串对应输入中的单词分隔空格,直接添加空格
        text.append(' ')
    else:
        # 字典get方法:找到键返回对应字符,找不到返回'*'
        text.append(eng_dict.get(item, '*'))

# 拼接所有片段并输出结果
result = ''.join(text)
print(result)

关键改动说明

  • 修正字典名称错误:统一使用定义好的eng_dict,避免未定义变量报错
  • 简化查找逻辑:用字典的get()方法替代嵌套循环,一行代码完成有效编码匹配与无效编码替换,既简洁又高效
  • 优化结果收集方式:用列表text存储转换片段,比字符串拼接更节省内存
  • 明确处理单词分隔:直接将输入中的空字符串(由split(' ')生成,对应原输入的单词间空格)转换为空格,保留原格式
  • 移除冗余代码:删除无意义的morse变量,简化逻辑结构

测试验证:输入- .... .. ....... - . .- --,将输出thi* team,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:35:27