Comment créer un traducteur de code Morse en utilisant Python
Publié: 2022-10-19Le code Morse est une méthode pour coder un message en utilisant des points , des tirets et des espaces . Il est largement utilisé pour communiquer des messages secrètement.
Vous avez peut-être vu l'utilisation du code morse dans les scènes de la marine de nombreux films pour communiquer des messages. Nous parlons ici du même code morse, mais la seule différence est que nous allons écrire un programme Python pour traduire de l'anglais vers le code Morse et vice versa.
Morse
Le code Morse a des modèles différents pour chaque alphabet anglais, nombre, ponctuation et caractères non latins. Une fois que vous connaissez les modèles de code morse pour différents caractères, il sera facile de les encoder et de les décoder. Vous pouvez consulter la page Wikipedia du code morse pour plus de détails et de modèles.

Dans ce didacticiel, nous apprendrons à encoder du texte anglais brut en code morse et vice versa. Nous utiliserons les alphabets anglais, les chiffres et la ponctuation lors du codage du décodage. Si vous souhaitez ajouter plus de types de caractères, vous pouvez facilement le faire une fois que vous avez appris la base de l'encodage et du décodage.
Une chose à retenir est que les alphabets majuscules et minuscules ont le même modèle de code morse. C'est parce que le code morse est principalement utilisé pour la communication qui ne se soucie pas des cas d'alphabet comme les conversations quotidiennes.
Entrons dans la partie codage pour l'encodage et le décodage.
Anglais vers code Morse
L'algorithme pour convertir du texte anglais brut en code morse est simple. Vérifions l'algorithme.
- Créez un dictionnaire avec les mappages de modèles de code morse avec des alphabets, des chiffres et des ponctuations anglais.
- Parcourez le texte et ajoutez le modèle de code morse de chaque caractère de texte au résultat.
- Le code Morse contient un espace après chaque caractère et un double espace après chaque mot.
- Ainsi, lorsque nous rencontrons un espace dans le texte, qui est le séparateur de mots, nous devons ajouter un double espace au résultat.
- La chaîne résultante sera le code morse dont nous avions besoin.
- Enfin, renvoyez le résultat.
Essayez d'écrire le code en Python. Ne vous inquiétez pas, même si vous n'êtes pas capable de l'écrire complètement.
Vérifions le code pour encoder du texte anglais brut en code morse.
# dictionary for mapping characters to morse code CHARS_TO_MORSE_CODE_MAPPING = { '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': '-----', '.': '.-.-.-', ',': '--..--', '?': '..--..', '\'': '· − − − − ·', '!': '− · − · − −', '/': '− · · − ·', '(': '− · − − ·', ')': '− · − − · −', '&': '· − · · ·', ':': '− − − · · ·', ';': '− · − · − ·', '=': '− · · · −', '+': '· − · − ·', '-': '− · · · · −', '_': '· · − − · −', '"': '· − · · − ·', '$': '· · · − · · −', '@': '· − − · − ·', } # function to encode plain English text to morse code def to_morse_code(english_plain_text): morse_code = '' for char in english_plain_text: # checking for space # to add single space after every character and double space after every word if char == ' ': morse_code += ' ' else: # adding encoded morse code to the result morse_code += CHARS_TO_MORSE_CODE_MAPPING[char.upper()] + ' ' return morse_code morse_code = to_morse_code( 'Geekflare produces high-quality technology & finance articles, makes tools, and APIs to help businesses and people grow.' ) print(morse_code)
Vous pouvez voir la sortie du code morse ci-dessous. Vous devriez également voir un code morse similaire dans votre terminal si vous n'avez pas modifié le message.
--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- · − · · · ..-. .. -. .- -. -.-. . .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ... - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ... - --- .... . .-.. .--. -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. . --. .-. --- .-- .-.-.-
Hourra! nous avons le code morse. Vous savez ce qui vient après.

Avant de sauter dans le programme de décodage, arrêtons-nous un instant et réfléchissons à la façon d'écrire du code pour le décoder.
…
Vous auriez dû penser à inverser le dictionnaire CHARS_TO_MORSE_CODE_MAPPING
comme l'une des étapes. Le faire manuellement est mouvementé et doit être mis à jour chaque fois que le mappage d'origine est modifié. Écrivons du code pour inverser le dictionnaire.
def reverse_mapping(mapping): reversed = {} for key, value in mapping.items(): reversed[value] = key return reversed
Nous inversons simplement les paires clé-valeur du dictionnaire donné avec le code ci-dessus. Le dictionnaire résultant contiendra les valeurs comme nouvelles clés et les clés comme nouvelles valeurs.
Nous avons toutes les pièces pour décoder le code morse en texte anglais clair. Sans plus tarder, décodons le code morse.
Code morse vers l'anglais
Nous pouvons inverser le processus d'encodage du code morse pour obtenir l'algorithme de décodage. Voyons l'algorithme de décodage du code morse en texte anglais brut.
- Inversez le dictionnaire
CHARS_TO_MORSE_CODE_MAPPING
en utilisant la fonction util que nous avons écrite. - Parcourez le code morse et gardez une trace du caractère actuel du code morse.
- Si nous rencontrons un espace, cela signifie que nous avons un caractère de code morse complet à décoder.
- Si le caractère de code morse actuel est vide et que nous avons deux espaces consécutifs, ajoutez un séparateur de mots qui est un espace unique en texte anglais brut.
- Si la condition ci-dessus est fausse, récupérez le caractère décodé du dictionnaire et ajoutez-le au résultat. Réinitialisez le caractère de code morse actuel.
- Si nous n'avons pas rencontré d'espace, ajoutez-le au caractère morse actuel.
- Si nous rencontrons un espace, cela signifie que nous avons un caractère de code morse complet à décoder.
- S'il y a le dernier caractère, ajoutez-le au résultat après décodage à l'aide du dictionnaire.
- Renvoie le résultat à la fin.
Vérifions le code de l'algorithme ci-dessus.
def reverse_mapping(mapping): # add function code from the previous snippet... CHARS_TO_MORSE_CODE_MAPPING = {} # add dictionary values MORSE_CODE_TO_CHARS_MAPPING = reverse_mapping(CHARS_TO_MORSE_CODE_MAPPING) def to_english_plain_text(morse_code): english_plain_text = '' current_char_morse_code = '' i = 0 while i < len(morse_code) - 1: # checking for each character if morse_code[i] == ' ': # checking for word if len(current_char_morse_code) == 0 and morse_code[i + 1] == ' ': english_plain_text += ' ' i += 1 else: # adding decoded character to the result english_plain_text += MORSE_CODE_TO_CHARS_MAPPING[ current_char_morse_code] current_char_morse_code = '' else: # adding morse code char to the current character current_char_morse_code += morse_code[i] i += 1 # adding last character to the result if len(current_char_morse_code) > 0: english_plain_text += MORSE_CODE_TO_CHARS_MAPPING[ current_char_morse_code] return english_plain_text english_plain_text = to_english_plain_text( '--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- · − · · · ..-. .. -. .- -. -.-. . .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ... - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ... - --- .... . .-.. .--. -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. . --. .-. --- .-- .-.-.- ' ) print(english_plain_text)
J'ai donné le code morse qui est généré à partir de la fonction d'encodage. Nous obtiendrons la sortie suivante si nous exécutons le programme ci-dessus.
GEEKFLARE PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.
Remarque : la sortie est dans l'alphabet majuscule anglais car nous avons utilisé l'alphabet majuscule pour le mappage dans le dictionnaire.
Derniers mots
Nous avons vu que la sortie de la fonction de décodage est en majuscule. Vous pouvez améliorer le programme en rendant la sortie telle qu'elle est dans le temps imparti en suivant les minuscules et les majuscules de l'alphabet anglais. Ceci n'est pas lié au code morse, car les majuscules et les minuscules ont le même schéma. Essayez-le, car c'est plus amusant à coder.
C'est tout pour ce tutoriel. Utilisez les programmes que nous avons écrits lorsque vous rencontrerez le code morse la prochaine fois.
Joyeux codage
Vous pouvez également voir comment créer un mot de passe aléatoire en Python.