A morze kód egy üzenet kódolása pontok, kötőjelek és szóközök használatával. Széles körben használják üzenetek titkos közlésére.
Sok filmben láthattad már morze-kód használatát üzenetek közvetítésére. Itt ugyanarról a morze kódról beszélünk, de az egyetlen különbség az, hogy egy Python programot fogunk írni, amely angolról Morse-kódra fordít és fordítva.
Tartalomjegyzék
Morze kód
A morze kód minden angol ábécéhez, számhoz, írásjelhez és nem latin karakterhez különböző mintákat tartalmaz. Miután ismeri a különböző karakterek morze-kódját, könnyen kódolhatja és dekódolhatja őket. További részletekért és mintákért tekintse meg a Wikipédia morzekód oldalát.
Ebben az oktatóanyagban megtanuljuk, hogyan lehet egyszerű angol szöveget morze kódba kódolni és fordítva. A dekódolás kódolásakor angol ábécét, számokat és írásjeleket fogunk használni. Ha több típusú karaktert szeretne hozzáadni, akkor könnyen megteheti, miután megtanulta a kódolás és dekódolás alapjait.
Ne feledje, hogy mind a nagy, mind a kisbetűs ábécéknek ugyanaz a morze kód mintája. Ennek az az oka, hogy a morze-kódot főként olyan kommunikációra használják, amely nem törődik az ábécé eseteivel, például a mindennapi beszélgetésekkel.
Térjünk rá a kódolási és dekódolási részre.
angolból morze kódra
Az egyszerű angol szöveg morzekóddá alakításának algoritmusa egyszerű. Nézzük meg az algoritmust.
- A morze kód minden karakter után szóközt és minden szó után dupla szóközt tartalmaz.
- Tehát amikor szóközzel találkozunk a szövegben, ami a szavak elválasztója, akkor dupla szóközt kell hozzáadnunk az eredményhez.
Próbáld meg Pythonban írni a kódot. Ne aggódjon, még akkor sem, ha nem tudja teljesen leírni.
Ellenőrizzük a kódot az egyszerű angol szöveg morze kódba való kódolásához.
# 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( 'etoppc.com produces high-quality technology & finance articles, makes tools, and APIs to help businesses and people grow.' ) print(morse_code)
Az alábbiakban láthatja a morzekód kimenetét. Hasonló morze-kódot kell látnia a terminálon is, ha nem változtatta meg az üzenetet.
--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- · − · · · ..-. .. -. .- -. -.-. . .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ... - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ... - --- .... . .-.. .--. -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. . --. .-. --- .-- .-.-.-
Hurrá! megkaptuk a morze kódot. Tudod mi jön utána.
Mielőtt belevágnánk a dekódoló programba, álljunk meg egy kicsit, és gondoljuk át, hogyan írjunk kódot a dekódoláshoz.
…
Gondolnia kellett volna a CHARS_TO_MORSE_CODE_MAPPING szótár megfordítására, mint az egyik lépésre. A manuális végrehajtás hektikus, és minden alkalommal frissíteni kell, amikor az eredeti leképezés megváltozik. Írjunk kódot a szótár megfordításához.
def reverse_mapping(mapping): reversed = {} for key, value in mapping.items(): reversed[value] = key return reversed
Éppen megfordítjuk az adott szótár kulcs-érték párjait a fenti kóddal. Az eredményül kapott szótár új kulcsokat és új kulcsokat fog tartalmazni.
Minden eszközünk megvan ahhoz, hogy a morze kódot egyszerű angol szöveggé dekódoljuk. Minden további nélkül dekódoljuk a morze kódot.
Morse kód angolra
Megfordíthatjuk a morze kódolás folyamatát, hogy megkapjuk a dekódoló algoritmust. Lássuk a morze kód egyszerű angol szöveggé való dekódolásának algoritmusát.
- Ha szóközzel találkozunk, az azt jelenti, hogy egy teljes morze karaktert kell dekódolnunk.
- Ha az aktuális morze karakter üres, és két egymást követő szóközünk van, akkor adjon hozzá egy szóelválasztót, amely egyetlen szóköz az egyszerű angol szövegben.
- Ha a fenti feltétel hamis, akkor vegye ki a dekódolt karaktert a szótárból, és adja hozzá az eredményhez. Állítsa vissza az aktuális morze karaktert.
- Ha nem találkoztunk szóközzel, add hozzá az aktuális morze karakterhez.
Ellenőrizzük a fenti algoritmus kódját.
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)
Megadtam a kódoló függvényből előállított morze kódot. A következő kimenetet kapjuk, ha a fenti programot futtatjuk.
etoppc.com PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.
Megjegyzés: a kimenet az angol nagybetűs ábécé, mert a szótárban a nagybetűs ábécét használtuk a leképezéshez.
Végső szavak
Láttuk, hogy a dekódoló függvény kimenete nagybetűs. Az angol ábécé alsó és felső betűinek nyomon követésével javíthatja a programot, ha a kimenetet az adott időpontban aktuálissá teszi. Ez nem kapcsolódik a morze kódhoz, mivel mind a felső, mind a kisbetűk ugyanazt a mintát tartalmazzák. Próbáld ki, mert szórakoztatóbb a kódolás.
Ennyi az oktatóanyag. Használja az általunk írt programokat, ha legközelebb morzekóddal találkozik.
Boldog kódolást 👨💻
Azt is megnézheti, hogyan hozhat létre véletlenszerű jelszót a Pythonban.