Python Kullanarak Mors Kodu Tercümanı Nasıl Oluşturulur
Yayınlanan: 2022-10-19Mors kodu, noktalar , kısa çizgiler ve boşluklar kullanarak bir mesajı kodlama yöntemidir. Mesajları gizlice iletmek için yaygın olarak kullanılır.
Birçok filmin donanma sahnelerinde mesaj iletmek için mors kodu kullanıldığını görmüş olabilirsiniz. Burada aynı mors kodundan bahsediyoruz ama tek fark şu ki, İngilizce'den Mors koduna çeviri yapmak için bir Python programı yazacağız ve bunun tersi de olacak.
Mors kodu
Mors kodunun her İngilizce alfabe, sayı, noktalama ve Latin olmayan karakterler için farklı kalıpları vardır. Farklı karakterler için mors kodu kalıplarını öğrendikten sonra, bunları kodlamak ve kodunu çözmek kolay olacaktır. Daha fazla ayrıntı ve desen için Wikipedia mors kodu sayfasına bakabilirsiniz.

Bu eğitimde, düz İngilizce metnin mors koduna nasıl kodlanacağını ve tersini öğreneceğiz. Kod çözmeyi kodlarken İngilizce alfabeler, sayılar ve noktalama işaretleri kullanacağız. Daha fazla karakter türü eklemek istiyorsanız, kodlama ve kod çözmenin temelini öğrendikten sonra bunu kolayca yapabilirsiniz.
Hatırlanması gereken bir şey, hem büyük hem de küçük harflerin aynı mors kodu düzenine sahip olmasıdır. Bunun nedeni, mors kodunun, günlük konuşmalar gibi alfabe durumlarını umursamayan iletişim için kullanılmasıdır.
Kodlama ve kod çözme için kodlama kısmına geçelim.
İngilizceden Mors alfabesine
Düz İngilizce metni mors koduna dönüştürme algoritması basittir. Algoritmayı kontrol edelim.
- İngilizce alfabeler, sayılar ve noktalama işaretleriyle mors kodu desen eşlemeleriyle bir sözlük oluşturun.
- Metni yineleyin ve sonuca her metin karakterinin mors kodu desenini ekleyin.
- Mors kodu, her karakterden sonra bir boşluk ve her kelimeden sonra çift boşluk içerir.
- Yani metinde kelimelerin ayırıcısı olan boşlukla karşılaştığımızda sonuca çift boşluk eklememiz gerekiyor.
- Ortaya çıkan dize, ihtiyacımız olan mors kodu olacaktır.
- Son olarak, sonucu döndürün.
Kodu Python'da yazmaya çalışın. Tam olarak yazamayacak olsanız bile merak etmeyin.
Düz İngilizce metni mors koduna kodlama kodunu kontrol edelim.
# 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)
Mors kodu çıktısını aşağıda görebilirsiniz. Mesajı değiştirmediyseniz, terminalinizde de benzer bir mors kodu görmelisiniz.
--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- · − · · · ..-. .. -. .- -. -.-. . .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ... - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ... - --- .... . .-.. .--. -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. . --. .-. --- .-- .-.-.-
Yaşasın! mors kodunu aldık. Sonrasını biliyorsun.

Kod çözme programına geçmeden önce biraz duralım ve kodu çözmek için nasıl kod yazılacağını düşünelim.
…
Adımlardan biri olarak CHARS_TO_MORSE_CODE_MAPPING
sözlüğünü tersine çevirmeyi düşünmeliydiniz. Bunu manuel olarak yapmak yoğun bir iştir ve orijinal haritalama her değiştirildiğinde güncellenmesi gerekir. Sözlüğü tersine çevirmek için kod yazalım.
def reverse_mapping(mapping): reversed = {} for key, value in mapping.items(): reversed[value] = key return reversed
Yukarıdaki kodla verilen sözlüğün anahtar/değer çiftlerini tersine çeviriyoruz. Ortaya çıkan sözlük, değerleri yeni anahtarlar ve yeni değerler olarak anahtarları içerecektir.
Mors kodunu düz İngilizce metne çevirecek tüm parçalara sahibiz. Lafı fazla uzatmadan mors kodunu çözelim.
Mors kodu ingilizce
Kod çözme algoritmasını elde etmek için mors kodu kodlama sürecini tersine çevirebiliriz. Mors kodunu düz İngilizce metne dönüştürmek için algoritmayı görelim.
-
CHARS_TO_MORSE_CODE_MAPPING
sözlüğünü yazdığımız util fonksiyonunu kullanarak ters çevirin. - Mors kodunu yineleyin ve mevcut mors kodu karakterini takip edin.
- Bir boşlukla karşılaşırsak, kodu çözülecek tam bir mors kodu karakterimiz var demektir.
- Geçerli mors kodu karakteri boşsa ve ardışık iki boşluğumuz varsa, düz İngilizce metinde tek boşluk olan bir kelime ayırıcı ekleyin.
- Yukarıdaki koşul yanlışsa, kodu çözülen karakteri sözlükten alın ve sonuca ekleyin. Geçerli mors kodu karakterini sıfırlayın.
- Boşlukla karşılaşmadıysak, mevcut mors karakterine ekleyin.
- Bir boşlukla karşılaşırsak, kodu çözülecek tam bir mors kodu karakterimiz var demektir.
- Son karakter varsa, sözlüğü kullanarak kodu çözdükten sonra sonuca ekleyin.
- Sonunda sonucu döndürün.
Yukarıdaki algoritmanın kodunu kontrol edelim.
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)
Kodlama işlevinden üretilen mors kodunu verdim. Yukarıdaki programı çalıştırırsak aşağıdaki çıktıyı alırız.
GEEKFLARE PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.
Not: Sözlükte eşleme için büyük harfli alfabeyi kullandığımız için çıktı İngilizce büyük harf alfabesindedir.
Son sözler
Kod çözme fonksiyonunun çıktısının büyük harf olduğunu gördük. İngiliz alfabesinin küçük ve büyük harflerini takip ederek çıktıyı verilen sürede olduğu gibi yaparak programı geliştirebilirsiniz. Hem büyük hem de küçük harfler aynı desene sahip olduğundan, bu mors koduyla ilgili değildir. Kodlamak daha eğlenceli olduğu için deneyin.
Bu eğitim için bu kadar. Bir dahaki sefere mors koduyla karşılaştığınızda yazdığımız programları kullanın.
mutlu kodlama
Python'da nasıl rastgele şifre oluşturulacağına da bakabilirsiniz.