Morsekode er en metode for å kode en melding ved hjelp av prikker, bindestreker og mellomrom. Det er mye brukt til å kommunisere meldinger i hemmelighet.
Du har kanskje sett morsekodebruk i marinescener i mange filmer for å kommunisere meldinger. Vi snakker om den samme morsekoden her, men den eneste forskjellen er at vi skal skrive et Python-program for å oversette fra engelsk til morsekode og omvendt.
Innholdsfortegnelse
Morse kode
Morsekode har forskjellige mønstre for hvert engelsk alfabet, tall, tegnsetting og ikke-latinske tegn. Når du kjenner morsekodemønstrene for forskjellige tegn, vil det være enkelt å kode og dekode dem. Du kan henvise til Wikipedia-siden med morsekode for flere detaljer og mønstre.
I denne opplæringen lærer vi hvordan du koder ren engelsk tekst til morsekode og omvendt. Vi vil bruke engelske alfabeter, tall og tegnsetting mens vi koder dekodingen. Hvis du vil legge til flere typer tegn, kan du enkelt gjøre det når du først har lært basen for koding og dekoding.
En ting å huske er at både store og små bokstaver har samme morsekodemønster. Dette er fordi morsekoden hovedsakelig brukes til kommunikasjon som ikke bryr seg om alfabetsaker som hverdagssamtaler.
La oss komme inn på kodingsdelen for koding og dekoding.
Engelsk til morsekode
Algoritmen for å konvertere ren engelsk tekst til morsekode er enkel. La oss sjekke algoritmen.
- Morsekode inneholder et mellomrom etter hvert tegn og et dobbeltrom etter hvert ord.
- Så når vi møter plass i teksten, som er skilletegn for ord, må vi legge til dobbeltrom til resultatet.
Prøv å skrive koden i Python. Ikke bekymre deg, selv om du ikke klarer å skrive det helt.
La oss sjekke koden for koding av ren engelsk tekst til morsekode.
# 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( 'tipsbilk.net produces high-quality technology & finance articles, makes tools, and APIs to help businesses and people grow.' ) print(morse_code)
Du kan se morsekoden nedenfor. Du bør også se en lignende morsekode i terminalen din hvis du ikke endret meldingen.
--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- · − · · · ..-. .. -. .- -. -.-. . .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ... - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ... - --- .... . .-.. .--. -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. . --. .-. --- .-- .-.-.-
Hurra! vi har morsekoden. Du vet hva som kommer etterpå.
Før vi hopper inn i dekodingsprogrammet, la oss stoppe opp en stund og tenke på hvordan du skriver kode for å dekode den.
…
Du burde ha tenkt på å reversere CHARS_TO_MORSE_CODE_MAPPING-ordboken som ett av trinnene. Å gjøre det manuelt er hektisk og må oppdateres hver gang den opprinnelige kartleggingen endres. La oss skrive kode for å snu ordboken.
def reverse_mapping(mapping): reversed = {} for key, value in mapping.items(): reversed[value] = key return reversed
Vi reverserer bare nøkkelverdi-parene til den gitte ordboken med koden ovenfor. Den resulterende ordboken vil inneholde verdier er nye nøkler og nøkler som nye verdier.
Vi har alle brikkene for å dekode morsekoden til ren engelsk tekst. La oss uten videre dekode morsekoden.
Morsekode til engelsk
Vi kan reversere prosessen med morsekodekoding for å få dekodingsalgoritmen. La oss se algoritmen for å dekode morsekoden til ren engelsk tekst.
- Hvis vi møter et mellomrom, betyr det at vi har et fullstendig morsekodetegn å dekode.
- Hvis gjeldende morsekodetegnet er tomt og vi har to påfølgende mellomrom, legg til en ordseparator som er et enkelt mellomrom i ren engelsk tekst.
- Hvis betingelsen ovenfor er usann, henter du det dekodede tegnet fra ordboken og legger det til resultatet. Tilbakestill gjeldende morsekodetegnet.
- Hvis vi ikke støter på plass, legg den til den gjeldende morse-karakteren.
La oss sjekke koden for algoritmen ovenfor.
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)
Jeg har gitt morsekoden som er generert fra kodingsfunksjonen. Vi vil få følgende utgang hvis vi kjører programmet ovenfor.
tipsbilk.net PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.
Merk: utdataene er i det engelske store alfabetet fordi vi har brukt det store alfabetet for kartlegging i ordboken.
Siste ord
Vi har sett at utgangen til dekodingsfunksjonen er med store bokstaver. Du kan forbedre programmet ved å gjøre utdataene slik de er på den gitte tiden ved å spore små og store bokstaver i det engelske alfabetet. Dette er ikke relatert til morsekode, da både store og små bokstaver har samme mønster. Prøv det, siden det er morsommere å kode.
Det var alt for denne opplæringen. Bruk programmene vi har skrevet når du møter morsekode neste gang.
Lykke til med koding 👨💻
Du kan også se på hvordan du oppretter et tilfeldig passord i Python.