7.2 摩斯密码(project)(已更新)

本关任务:编写程序,将英文句子转换成摩尔斯电码的小程序。

相关知识

摩斯密码

摩斯密码(又译为摩尔斯电码,Morse 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关 摩斯密码

def morse_code_encryption(txt):
    """接收明文字符串为参数,返回用摩斯密码加密后的字符串。"""
    # 补充你的代码

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

    num = len(txt)
    Morsecode = ''
    for i in range(num):
        if txt[i] in dic:
            Morsecode += str(dic[txt[i]])
    return Morsecode


if __name__ == '__main__':
    plaintext = input().lower()  # 输入一个字符串并转为小写
    print(morse_code_encryption(plaintext))  # 调用函数,并输出返回值

第2关 摩斯密码加密器

def morse_code_encryption(txt):
    """接收明文字符串为参数,返回用摩斯密码加密后的字符串。"""
    char = 'abcdefghijklmnopqrstuvwxyz' + '0123456789' + '.:,;?=\'/!-_"()$&@'  # 可用于加密的字符
    morse_letter = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.",
                    "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
    morse_digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
    morse_spec = ['.-.-.-', '---...', '--..--', '-.-.-.', '..- -..', '-...-', '.----.', '-..-.', '-.-.--', '-....-',
                  '..--.-', '.-..-.', '-.--.', '-.--.-', '...-..-', '·-···', '.--.-.', '']  # '.:,;?=\'/!-_"()$&@'的摩斯码
    # 补充你的代码
    content = morse_letter + morse_digit + morse_spec
    list = []
    for i in txt:
        if i in char:
            list.append(content[char.index(i)])
        else:
            list.append(i)
    return list


if __name__ == '__main__':
    plaintext = input().lower()              # 输入一个字符串并转为小写
    print(*morse_code_encryption(plaintext))  # 调用函数,并输出返回值

第3关 摩斯密码解密

def morse_code_decryption(txt):
    """接收密文字符串为参数,返回用摩斯密码解密后的字符串。"""
    char = 'abcdefghijklmnopqrstuvwxyz' + '0123456789' + '.:,;?=\'/!-_"()$&@–'
    morse_letter = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.",
                    "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
    morse_digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
    morse_spec = ['.-.-.-', '---...', '--..--', '-.-.-.', '..- -..', '-...-', '.----.', '-..-.', '-.-.--', '-....-',
                  '..--.-', '.-..-.', '-.--.', '-.--.-', '...-..-', '·-···', '.--.-.', '–','']
    # 补充你的代码
    content = morse_letter + morse_digit + morse_spec
    MORSE_CODE_DICT = dict(zip(char,content))
    MORSE_CODE_DICT[''] = ''
    txt += ' '
    decipher = ''
    citext = ''
    for letter in txt:
        # 检查空间
        if letter != ' ':
            i = 0
            # 在空格的情况下
            citext += letter
        # 在空间的情况下
        else:
            # 如果 i = 1 表示一个新字符
            i += 1
            # 如果 i = 2 表示一个新单词
            if i == 2:
                # 添加空格来分隔单词
                decipher += ' '
            else:
                # 使用它们的值访问密钥(加密的反向)
                # decipher += list(char)[list(content).index(citext)]
                decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT.values()).index(citext)]
                citext = ''
    return decipher

if __name__ == '__main__':
    ciphertext = input()                      # 输入一个密文
    print(morse_code_decryption(ciphertext))  # 调用函数,并输出返回值

猜你喜欢

转载自blog.csdn.net/m0_70456205/article/details/130396777
7.2