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
相关产品推荐
相关产品推荐

