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

Python实现摩尔斯电码翻译时各字符间无空格问题如何解决

问题修复方案

1. 摩尔斯电码字母分隔问题修复

你遇到的输出无字母分隔的问题根源是拼接编码时未添加分隔符,仅需要修改txt_2_morse函数中的拼接逻辑即可:

def txt_2_morse(msg):
    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':'--..', '1':'.----', '2':'..---', '3':'...--', '4':'....-',
        '5':'.....', '6':'-....', '7':'--...', '8':'---..', '9':'----.',
        '0':'-----', ' ':'/'}
    # 仅将join的拼接符从空字符串改为空格,即可实现不同字母的摩尔斯编码用空格分隔
    return " ".join([morse.get(c.upper(), ' ') for c in msg])

修改后效果:

  • 输入ABC会输出.- -... -.-.,符合摩尔斯电码标准书写格式
  • 输入AB CD会输出.- -... / -.-. -..,单词分隔符/会自动和前后编码用空格隔开,格式正确

2. 额外修复代码中存在的其他逻辑错误

你当前代码的输入校验部分存在语法和逻辑问题,会导致校验完全失效,调整后的循环逻辑如下:

while True:
    user_input = input('Input your hidden message!')
    # 修正正则写法:Python的re规则不需要包裹/,也不支持/g修饰符,此处规则为匹配所有非法字符
    regex_matcher= re.compile(r"[^a-zA-Z0-9\s]")
    if regex_matcher.search(user_input):
        print("仅支持输入字母、数字和空格,请重新输入")
        continue
    # 改用with语法操作文件,自动处理资源关闭,避免泄漏
    with open("myfile.txt", "w", encoding="utf-8") as f:
        f.write(txt_2_morse(user_input + "\n"))
    break

调整说明:

  • 原正则写法不符合Python re模块规范,校验规则完全无法生效
  • 原判断逻辑错误:re.search返回匹配对象或None,永远不会等于False,会直接跳过所有校验
  • 新增编码指定,避免不同系统下写入文件出现乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:36:01