注册 登录
编程论坛 Python论坛

摩斯电码解密器出现问题,在线求助,急

WLE 发布于 2020-10-05 21:29, 812 次点击
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
1 回复
#2
古1232020-10-07 14:15
只有本站会员才能查看附件,请 登录

1:最好不要用关键字
2:字典里最后一个是不需要逗号的

使用print(val,',',end='')的时候val与,之间会有一个空格,所以你后面找的是'--. ',尾部多一个空格
这个是我刚才写的,可以运行
程序代码:
code = {'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': '-----'
     }
# 反转键值
code2 = {value:key for key,value in code.items()}

mode = input('选择模式,0=加密,1=解密')
if mode == '0':
    text = input('请输入一串文字:')

    for c in text:
        morse = code[c.upper()]
        print(morse,'/',end='')

elif mode == '1':
    text = input('请输入一段字符:')
    # 清除空字符
    # print(morse,'/',end='')会在morse和'/'之间添加一个空格
    text = text.replace(' ','')

    # 以/分隔
    for c in text.split('/'):
        # 筛除空字符,当输入最后为/时候,不要忘记后面还有个空
        if c != '':
            print(code2[c],'/',end='')

1