Come scrivere un traduttore di codice Morse in Python

Come scrivere un traduttore di codice Morse in Python

Il codice Morse esiste dall’inizio del 1800 e ha trovato la sua strada nell’era digitale. Dal servire come mezzo di comunicazione critico durante la seconda guerra mondiale all’invio di messaggi crittografati in aviazione e marina, il codice Morse è qui per restare.

Se non conosci questo affascinante linguaggio, preparati non solo a scoprire il codice Morse, ma anche a creare il tuo traduttore personale utilizzando Python.

Cos’è il codice Morse?

Il codice Morse è un metodo di comunicazione in cui si codificano i caratteri del testo in una sequenza standard di due segnali di durata variabile, indicati da punti e trattini. Il codice Morse prende il nome da Samuel Morse, uno degli inventori del telegrafo. Puoi memorizzarlo e trasmetterlo tramite onde sonore o luce visibile percepibile dai sensi umani.

La lunghezza dell’equivalente del codice Morse è inversa alla nostra frequenza di utilizzo di quell’alfabeto, e puoi vedere che il codice Morse assegna la lettera più comune nella lingua inglese, E, a un solo punto.

Puoi utilizzare questi software e app gratuiti in codice Morse per scambiarti messaggi in codice. D’altra parte, imparare il codice Morse è abbastanza semplice e puoi impararlo in un mese con una buona dose di pratica. Per aiutarti a iniziare, ecco nove siti per imparare il codice Morse gratuitamente.

Come costruire un traduttore di codice Morse usando Python

Inizia definendo un dizionario Python denominato MORSE_CODE_DICT per memorizzare i valori del codice Morse. Le chiavi saranno lettere dell’alfabeto inglese, con l’appropriata sequenza di punti o trattini come valore corrispondente. Usando un dizionario, puoi cercare rapidamente qualsiasi chiave al suo valore corrispondente.

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

Dichiara una funzione denominata encrypt che accetta il messaggio come parametro di input. All’interno della funzione inizializzare una variabile denominata cifra con una stringa vuota. Lo utilizzerai per creare e archiviare il messaggio crittografato. Successivamente, dichiara un ciclo for che itera su ogni lettera del messaggio.

Se la lettera non è uno spazio bianco, passala al dizionario per la ricerca. Il dizionario restituisce il corrispondente valore More code in base alla chiave. Aggiungere uno spazio per separare i caratteri del codice Morse e utilizzare l’operatore abbreviato += per concatenarlo con il codice ottenuto dal dizionario. Se la lettera è uno spazio bianco, aggiungi uno spazio extra alla cifra; Il codice Morse separa le parole con due spazi consecutivi.

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

Dichiara una funzione denominata decrypt che accetta il messaggio come parametro di input. Aggiungi uno spazio alla fine, usando l’operatore abbreviato per accedere all’ultimo carattere del codice Morse. Inizializza due variabili, decipher e citext per contenere stringhe vuote. La variabile decipher manterrà la frase decifrata composta dall’alfabeto inglese mentre usi citext per memorizzare ogni lettera del codice Morse.

Itera un ciclo for che attraversa ogni lettera del codice Morse. Se la lettera non è uno spazio bianco, inizializza una variabile contatore i che tiene traccia del numero di spazi fino a zero e memorizza il codice Morse di un singolo carattere in citext. Altrimenti, la lettera è uno spazio, quindi incrementa il contatore di uno.

Se il contatore è uguale a due, significa che devi aggiungere uno spazio bianco alla parola decifrata decifrare. Altrimenti, accedi alle chiavi usando i loro valori. Per fare ciò, scorrere le coppie chiave-valore nel dizionario usando la funzione items. Se il citext è uguale al valore, aggiungi la chiave corrispondente alla variabile decipher utilizzando l’operatore abbreviato.

Infine, cancella il citext per ottenere la lettera successiva e restituire la frase decrittografata ottenuta alla chiamata di funzione.

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

Testare le funzioni con alcuni input di esempio. Inizia inizializzando una variabile denominata messaggio con la parola o la frase che desideri crittografare. Utilizzare la funzione upper per convertire tutte le lettere in maiuscolo e passarle alla funzione encrypt come argomento. Il codice Morse contiene solo lettere maiuscole, che sono le chiavi del dizionario. Ciò aiuta anche a evitare controlli di runtime non necessari per maiuscole e minuscole valide.

Stampa il valore risultante per visualizzare l’equivalente in codice Morse della frase originale.

Quindi, memorizza un codice Morse nella variabile messaggio e passalo alla funzione decrypt. Stampa il risultato e verifica che sia corretto.

Invece di codificare l’input, puoi accettarlo dall’utente con la funzione input() .

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

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

Output del traduttore di codice Morse in Python

Il programma Python traduce ogni lettera dell’alfabeto inglese nel suo equivalente in codice Morse e la visualizza nella schermata di output del terminale come mostrato. Se copi l’output ottenuto e lo passi per la decrittazione, riceverai il testo originale che hai passato in precedenza. Questo verifica che la traduzione abbia funzionato perfettamente.

Output del traduttore di codice Morse in Python

Applicazioni mobili per il codice Morse

I traduttori di codice Morse sono disponibili gratuitamente a portata di mano. Più di centinaia di applicazioni come Morse Mania, Morse Trainer, Morse Code Reader, Morse Code Keyboard e Morse Code Translator sono disponibili su diverse piattaforme. Con tua sorpresa, è persino supportato da GBoard, la tastiera Google.

Per accedere al codice Morse su Gboard, apri l’icona Impostazioni su Gboard, seleziona Lingue e tocca Inglese (USA). Scorri verso destra tra le opzioni, quindi scegli Codice Morse. La tua tastiera ora supporta l’inserimento del codice Morse insieme ai servizi di accessibilità, come TalkBack, Switch Access o Seleziona per ascoltare.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *