# -*- coding:utf-8 -*- __nom_fichier__ = "morse" __author__ = "fay7 : Christine Fay-Varnier" __date__ = "février 2017" # **************************** # programme de décodage morse # **************************** def codage_morse(message, sep, dico_morse): """ @param message: chaine de caractéres @param sep: séparateur entre deux codes morse @return: chaîne de caractères correspondant au codage morse de message """ message_morse = dico_morse[message[0].upper()] # initialisation avec le code de la 1ère lettre # permet d'éviter d'avoir un "#" au début du codage # parcours des caractères du message passé en majuscules (sauf le 1er caractère) for c in message[1:].upper(): message_morse += sep + dico_morse[c] return message_morse def decodage_morse(message_morse, sep, dico_morse): """ @param message: chaine de caractéres @param sep: séparateur entre deux codes morse @return: chaîne de caractères correspondant au message morse décrypté """ # creation du dictionnaire inverse dico_morse_inverse = {code : car for car, code in dico_morse.items()} message = "" # on découpe la chaîne en enlevant les caractères séparateurs lcode = message_morse.split(sep) for c in lcode: message = message + dico_morse_inverse[c] return message # programme principal if __name__ == '__main__': dico_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": ".----", "6": "-....", "2": "..---", "7": "--...", "3": "...--", "8": "---..", "4": "....-", "9": "----.", "5": ".....", "0": "-----", " ": " "} message = "il fait beau." message_morse = codage_morse(message, "#", dico_morse) print(message_morse) message = decodage_morse(message_morse, "#", dico_morse) print(message)