So erstellen Sie einen Morsecode-Übersetzer mit Python

Morsecode ist eine Methode zum Codieren einer Nachricht mit Punkten, Bindestrichen und Leerzeichen. Es wird häufig verwendet, um Nachrichten heimlich zu übermitteln.

Sie haben vielleicht die Verwendung von Morsecodes in Marineszenen vieler Filme gesehen, um Nachrichten zu kommunizieren. Wir sprechen hier über denselben Morsecode, aber der einzige Unterschied besteht darin, dass wir ein Python-Programm schreiben werden, um vom Englischen in den Morsecode und umgekehrt zu übersetzen.

Morse-Code

Der Morsecode hat unterschiedliche Muster für jedes englische Alphabet, jede Zahl, Satzzeichen und nicht-lateinische Zeichen. Sobald Sie die Morsecode-Muster für verschiedene Zeichen kennen, ist es einfach, sie zu codieren und zu decodieren. Weitere Details und Muster finden Sie auf der Wikipedia-Seite mit Morsecode.

In diesem Tutorial lernen wir, wie man einfachen englischen Text in Morsecode kodiert und umgekehrt. Wir werden englische Alphabete, Zahlen und Satzzeichen verwenden, während wir die Dekodierung codieren. Wenn Sie weitere Arten von Zeichen hinzufügen möchten, können Sie dies ganz einfach tun, sobald Sie die Grundlagen der Codierung und Decodierung gelernt haben.

Eine Sache, die Sie sich merken sollten, ist, dass sowohl Groß- als auch Kleinbuchstaben das gleiche Morsecode-Muster haben. Dies liegt daran, dass der Morsecode hauptsächlich für Kommunikation verwendet wird, die sich nicht um Groß- und Kleinschreibung kümmert, wie z. B. alltägliche Gespräche.

Kommen wir zum Kodierungsteil zum Kodieren und Dekodieren.

Englisch zu Morsecode

Der Algorithmus zum Konvertieren von reinem englischen Text in Morsecode ist unkompliziert. Lassen Sie uns den Algorithmus überprüfen.

  • Erstellen Sie ein Wörterbuch mit Zuordnungen der Morsecode-Muster zu englischen Alphabeten, Zahlen und Satzzeichen.
  • Iterieren Sie über den Text und fügen Sie das Morsecode-Muster jedes Textzeichens zum Ergebnis hinzu.
    • Der Morsecode enthält nach jedem Zeichen ein Leerzeichen und nach jedem Wort ein doppeltes Leerzeichen.
    • Wenn wir also im Text auf Leerzeichen stoßen, die das Trennzeichen für Wörter sind, müssen wir dem Ergebnis doppelte Leerzeichen hinzufügen.
  • Die resultierende Zeichenfolge ist der Morsecode, den wir brauchten.
  • Geben Sie abschließend das Ergebnis zurück.
  • Versuchen Sie, den Code in Python zu schreiben. Machen Sie sich keine Sorgen, auch wenn Sie es nicht vollständig schreiben können.

      So löschen Sie ein Nintendo Switch-Konto

    Lassen Sie uns den Code für die Codierung von reinem englischen Text in Morsecode überprüfen.

    # 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(
        'wdzwdz produces high-quality technology & finance articles, makes tools, and APIs to help businesses and people grow.'
    )
    print(morse_code)

    Sie können die Morsecode-Ausgabe unten sehen. Sie sollten auch einen ähnlichen Morsecode in Ihrem Terminal sehen, wenn Sie die Nachricht nicht geändert haben.

    --. . . -.- ..-. .-.. .- .-. .   .--. .-. --- -.. ..- -.-. . ...   .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.--   - . -.-. .... -. --- .-.. --- --. -.--   · − · · ·   ..-. .. -. .- -. -.-. .   .- .-. - .. -.-. .-.. . ... --..--   -- .- -.- . ...   - --- --- .-.. ... --..--   .- -. -..   .- .--. .. ...   - ---   .... . .-.. .--.   -... ..- ... .. -. . ... ... . ...   .- -. -..   .--. . --- .--. .-.. .   --. .-. --- .-- .-.-.-

    Hurra! Wir haben den Morsecode. Sie wissen, was danach kommt.

      So übertragen Sie ein beliebiges eBook mit Calibre auf den Kindle

    Bevor wir in das Dekodierungsprogramm springen, wollen wir eine Weile innehalten und darüber nachdenken, wie man Code schreibt, um ihn zu dekodieren.

    Sie hätten als einen der Schritte daran denken sollen, das CHARS_TO_MORSE_CODE_MAPPING-Wörterbuch umzukehren. Die manuelle Durchführung ist hektisch und muss aktualisiert werden, wenn die ursprüngliche Zuordnung geändert wird. Lassen Sie uns Code schreiben, um das Wörterbuch umzukehren.

    def reverse_mapping(mapping):
        reversed = {}
        for key, value in mapping.items():
            reversed[value] = key
        return reversed

    Wir kehren nur die Schlüssel-Wert-Paare des angegebenen Wörterbuchs mit dem obigen Code um. Das resultierende Wörterbuch enthält Werte als neue Schlüssel und Schlüssel als neue Werte.

    Wir haben alle Teile, um den Morsecode in einfachen englischen Text zu dekodieren. Lassen Sie uns ohne weiteres den Morsecode entschlüsseln.

    Morsecode ins Englische

    Wir können den Prozess der Morsecode-Codierung umkehren, um den Decodieralgorithmus zu erhalten. Sehen wir uns den Algorithmus zum Decodieren des Morsecodes in einfachen englischen Text an.

  • Kehren Sie das Wörterbuch CHARS_TO_MORSE_CODE_MAPPING mit der von uns geschriebenen util-Funktion um.
  • Iterieren Sie über den Morsecode und verfolgen Sie das aktuelle Morsecodezeichen.
    • Wenn wir auf ein Leerzeichen stoßen, bedeutet dies, dass wir ein vollständiges Morsecodezeichen zu entschlüsseln haben.
      • Wenn das aktuelle Morsecode-Zeichen leer ist und wir zwei aufeinanderfolgende Leerzeichen haben, fügen Sie ein Worttrennzeichen hinzu, das im reinen englischen Text ein einzelnes Leerzeichen ist.
      • Wenn die obige Bedingung falsch ist, holen Sie sich das decodierte Zeichen aus dem Wörterbuch und fügen Sie es dem Ergebnis hinzu. Setzt das aktuelle Morsecodezeichen zurück.
    • Wenn wir kein Leerzeichen gefunden haben, fügen Sie es dem aktuellen Morsezeichen hinzu.
  • Wenn es das letzte Zeichen gibt, fügen Sie es nach der Dekodierung mit dem Wörterbuch zum Ergebnis hinzu.
  • Geben Sie das Ergebnis am Ende zurück.
  • Lassen Sie uns den Code für den obigen Algorithmus überprüfen.

    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)

    Ich habe den Morsecode angegeben, der von der Codierungsfunktion generiert wird. Wir erhalten die folgende Ausgabe, wenn wir das obige Programm ausführen.

    wdzwdz PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.

    Hinweis: Die Ausgabe erfolgt im englischen Großbuchstaben, da wir das Großbuchstaben-Alphabet für die Zuordnung im Wörterbuch verwendet haben.

      Dieses Tool sagt Ihnen alles, was Ihr Browser Websites über Sie erzählt

    Letzte Worte

    Wir haben gesehen, dass die Ausgabe der Dekodierungsfunktion in Großbuchstaben ist. Sie können das Programm verbessern, indem Sie die Ausgabe so machen, wie sie in der angegebenen Zeit ist, indem Sie die Klein- und Großbuchstaben des englischen Alphabets verfolgen. Dies hat nichts mit dem Morsecode zu tun, da sowohl Groß- als auch Kleinbuchstaben das gleiche Muster haben. Probieren Sie es aus, denn es macht mehr Spaß zu programmieren.

    Das war es für dieses Tutorial. Verwenden Sie die Programme, die wir geschrieben haben, wenn Sie das nächste Mal auf Morsezeichen stoßen.

    Viel Spaß beim Programmieren 👨‍💻

    Sie können sich auch ansehen, wie Sie in Python ein zufälliges Passwort erstellen.