El código Morse (cifrado / descifrado) guión

# v1.1
# encode时会将非ANSII字符变为空格
# decode时会跳过非ANSII字符
class MorseCoder:
    __encode_alphabet = {"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": "-----",
                         "(": ".--.-", "-": "-....-", "?": "..--..", "/": "-..-.",
                         ".": ".-.-.-", "@": ".--.-."
                         }
    __decode_alphabet = dict([val, key] for key, val in __encode_alphabet.items())  # 解密对照表

    def encode(self, plaintext):
        """Encode AscII chars in plaintext to morse code"""
        charList = list(plaintext.upper())
        morsecodeList = \
            [self.__encode_alphabet[char] if char in self.__encode_alphabet.keys() else " " for char in charList]
        return " ".join(morsecodeList)

    def decode(self, morsecode):
        morsecodeList = morsecode.split(" ")
        charList = \
            [self.__decode_alphabet[char] if char in self.__decode_alphabet.keys() else char for char in morsecodeList]
        return "".join(charList)

    def get_encode_alphabet(self):
        return self.__encode_alphabet

    def get_decode_alphabet(self):
        return self.__decode_alphabet


if __name__ == '__main__':
    mc = MorseCoder()
    plaintext = "ALPHALAB"   #需要加密的字符串
    morsecode = mc.encode(plaintext)
    print("encode result: ", morsecode)
    morsecode = ".- .-.. .--. .... .- .-.. .- -..."   #需要解密的密文
    plaintext = mc.decode(morsecode)
    print("decode result: ", plaintext)
    mc.get_encode_alphabet()
    mc.get_decode_alphabet()

Reproducido en: https://blog.csdn.net/xHibiki/article/details/88928419

Publicados 148 artículos originales · ganado elogios 61 · Vistas a 60000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41617034/article/details/104701151
Recomendado
Clasificación