Comment écrire un traducteur de code Morse en Python

Comment écrire un traducteur de code Morse en Python

Le code Morse existe depuis le début des années 1800 et a trouvé son chemin vers l’ère numérique. Du service de moyen de communication critique pendant la Seconde Guerre mondiale à l’envoi de messages cryptés dans l’aviation et la marine, le code Morse est là pour rester.

Si vous ne connaissez pas ce langage fascinant, préparez-vous non seulement à découvrir le code Morse, mais également à créer votre propre traducteur à l’aide de Python.

Qu’est-ce que le code Morse ?

Le code Morse est une méthode de communication dans laquelle vous encodez des caractères de texte dans une séquence standard de deux signaux de durée variable, indiqués par des points et des tirets. Le code Morse tire son nom de Samuel Morse, l’un des inventeurs du télégraphe. Vous pouvez le mémoriser et le transmettre via des ondes sonores ou de la lumière visible perceptibles par les sens humains.

La longueur de l’équivalent du code Morse est inverse à notre fréquence d’utilisation de cet alphabet, et vous pouvez voir que le code Morse attribue la lettre la plus courante en anglais, E, à un point seulement.

Vous pouvez utiliser ces logiciels et applications de code Morse gratuits pour vous envoyer des messages codés. D’autre part, l’apprentissage du code Morse est assez simple et vous pouvez l’apprendre en un mois avec une bonne dose de pratique. Pour vous aider à démarrer, voici neuf sites pour apprendre gratuitement le code Morse.

Comment créer un traducteur de code Morse à l’aide de Python

Commencez par définir un dictionnaire Python nommé MORSE_CODE_DICT pour stocker les valeurs du code Morse. Les touches seront des lettres de l’alphabet anglais, avec la séquence de points ou de tirets appropriée comme valeur correspondante. À l’aide d’un dictionnaire, vous pouvez rechercher rapidement n’importe quelle clé à sa valeur correspondante.

MORSE_CODE_DICT = { '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':'-----', ', ':'--..--', '.':'.-.-.-',
                    '?':'..--..', '/':'-..-.', '-':'-....-',
                    '(':'-.--.', ')':'-.--.-' }

Déclarez une fonction nommée encrypt qui accepte message comme paramètre d’entrée. Dans la fonction, initialisez une variable nommée cipher avec une chaîne vide. Vous l’utiliserez pour créer et stocker le message chiffré. Ensuite, déclarez une boucle for qui itère sur chaque lettre du message.

Si la lettre n’est pas un espace blanc, passez-la au dictionnaire pour la recherche. Le dictionnaire renvoie la valeur de code More correspondante en fonction de la clé. Ajoutez un espace pour séparer les caractères du code Morse et utilisez l’opérateur abrégé += pour le concaténer avec le code obtenu à partir du dictionnaire. Si la lettre est un espace blanc, ajoutez un espace supplémentaire au chiffre ; Le code Morse sépare les mots par deux espaces consécutifs.

def encrypt(message):
    cipher = ""
    for letter in message:
        if letter! = "":
            cipher += MORSE_CODE_DICT[letter] + ""
        else:
            cipher += ""
    return cipher

Déclarez une fonction nommée decrypt qui accepte message comme paramètre d’entrée. Ajoutez un espace à la fin, en utilisant l’opérateur abrégé pour accéder au dernier caractère du code Morse. Initialisez deux variables, déchiffrer et citext pour contenir des chaînes vides. La variable decipher contiendra la phrase déchiffrée composée de l’alphabet anglais pendant que vous utilisez citext pour stocker chaque lettre du code Morse.

Itérer une boucle for qui parcourt chaque lettre du code Morse. Si la lettre n’est pas un espace blanc, initialisez une variable compteur i qui garde une trace du nombre d’espaces jusqu’à zéro et stocke le code Morse d’un seul caractère dans citext. Sinon, la lettre est un espace, donc incrémentez le compteur de un.

Si le compteur est égal à deux, cela signifie que vous devez ajouter un espace blanc au déchiffrement de la variable de mot déchiffré. Sinon, accédez aux clés en utilisant leurs valeurs. Pour ce faire, parcourez les paires clé-valeur du dictionnaire à l’aide de la fonction items . Si le citext est égal à la valeur, ajoutez la clé correspondante à la variable de déchiffrement à l’aide de l’opérateur abrégé.

Enfin, effacez le citext pour obtenir la lettre suivante et renvoyez la phrase déchiffrée obtenue à l’appel de fonction.

def decrypt(message):
    message += ""
    decipher = ""
    citext = ""

    for letter in message:
        if letter! = "":
            i = 0
            citext += letter
        else:
            i += 1

            if i == 2:
                decipher += ""
            else:
                for key, value in MORSE_CODE_DICT.items():
                    if citext == value:
                        decipher += key

                citext = ""

    return decipher

Testez les fonctions avec un échantillon d’entrée. Commencez par initialiser une variable nommée message avec le mot ou la phrase que vous souhaitez chiffrer. Utilisez la fonction upper pour convertir toutes les lettres en majuscules et passez-la à la fonction encrypt en tant qu’argument. Le code Morse ne contient que des lettres majuscules, qui sont les clés du dictionnaire. Cela permet également d’éviter des contrôles d’exécution inutiles pour une casse valide.

Imprimez la valeur résultante pour afficher l’équivalent en code Morse de la phrase originale.

Ensuite, stockez un code Morse dans la variable de message et transmettez-le à la fonction de décryptage. Imprimez le résultat et vérifiez qu’il est correct.

Au lieu de coder en dur l’entrée, vous pouvez l’accepter de l’utilisateur avec la fonction input() .

message = "Make Use Of"
result = encrypt(message.upper())
print(result)

message = "--. - -.-. . .-. ... ---. .-."
result = decrypt(message)
print(result)

Sortie du traducteur de code Morse en Python

Le programme Python traduit chaque lettre de l’alphabet anglais en son équivalent en code Morse et l’affiche sur l’écran de sortie du terminal, comme indiqué. Si vous copiez la sortie obtenue et que vous la transmettez pour le décryptage, vous recevrez le texte original que vous avez transmis précédemment. Cela vérifie que la traduction a parfaitement fonctionné.

Sortie du traducteur de code Morse en Python

Applications mobiles pour le code Morse

Des traducteurs de code Morse sont disponibles gratuitement à portée de main. Plus de centaines d’applications telles que Morse Mania, Morse Trainer, Morse Code Reader, Morse Code Keyboard et Morse Code Translator sont disponibles sur différentes plates-formes. À votre grande surprise, il est même pris en charge par GBoard – le clavier Google.

Pour accéder au code Morse sur votre Gboard, ouvrez l’icône Paramètres sur le Gboard, sélectionnez Langues et appuyez sur Anglais (États-Unis). Faites défiler les options vers la droite, puis choisissez Code Morse. Votre clavier prend désormais en charge l’insertion de code Morse ainsi que des services d’accessibilité, tels que TalkBack, Switch Access ou Select to Speak.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *