خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه نوشتن مترجم کد مورس در پایتون

ترجمه رشته را با این آموزش آسان تمرین کنید.

کد مورس از اوایل دهه 1800 وجود داشته و راه خود را به عصر دیجیتال باز کرده است. از خدمت به عنوان یک رسانه مهم ارتباطی در طول جنگ جهانی دوم گرفته تا ارسال پیام های رمزگذاری شده در هوانوردی و دریایی، کد مورس اینجا باقی می ماند.

اگر از این زبان جذاب بی اطلاع هستید، آماده باشید تا نه تنها کد مورس را کشف کنید، بلکه مترجم خود را با استفاده از پایتون بسازید.

کد مورس چیست؟

کد مورس یک روش ارتباطی است که در آن کاراکترهای متن را در یک دنباله استاندارد از دو سیگنال با مدت زمان متفاوت رمزگذاری می‌کنید که با نقطه و خط تیره مشخص می‌شوند. رمز مورس نام خود را از ساموئل مورس، یکی از مخترعان تلگراف گرفته است. شما می توانید آن را به خاطر بسپارید و از طریق امواج صوتی یا نور مرئی قابل درک توسط حواس انسان منتقل کنید.

طول معادل کد مورس معکوس با فرکانس استفاده ما از آن الفبا است، و می توانید ببینید که کد مورس رایج ترین حرف در زبان انگلیسی، E، را فقط به یک نقطه اختصاص می دهد.

می‌توانید از این نرم‌افزارها و برنامه‌های کد مورس رایگان برای ارسال پیام‌های کدگذاری شده به یکدیگر استفاده کنید. از طرف دیگر، یادگیری کد مورس نسبتاً ساده است و شما می توانید در عرض یک ماه آن را با مقدار کافی تمرین یاد بگیرید. برای کمک به شما برای شروع، در اینجا نه سایت برای یادگیری رایگان کد مورس وجود دارد.

نحوه ساخت مترجم کد مورس با استفاده از پایتون

با تعریف فرهنگ لغت پایتون به نام MORSE_CODE_DICT برای ذخیره مقادیر کد مورس شروع کنید. کلیدها حروف الفبای انگلیسی خواهند بود که مقدار مربوطه به ترتیب نقطه یا خط تیره مناسب است. با استفاده از یک فرهنگ لغت، می توانید به سرعت هر کلیدی را به مقدار متناظر آن جستجو کنید.

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

تابعی به نام encrypt را اعلام کنید که پیام را به عنوان پارامتر ورودی می پذیرد. در داخل تابع، متغیری به نام cipher را با یک رشته خالی مقداردهی اولیه کنید. از این برای ایجاد و ذخیره پیام رمزگذاری شده استفاده خواهید کرد. بعد، یک حلقه for را اعلام کنید که روی هر حرف در پیام تکرار می شود.

مطلب مرتبط:   نحوه پیاده سازی OAuth در یک برنامه Express با استفاده از GitHub

اگر حرف خالی نیست، آن را برای جستجو به فرهنگ لغت ارسال کنید. فرهنگ لغت مقدار کد More مربوطه را بر اساس کلید برمی گرداند. برای جدا کردن کاراکترهای کد مورس یک فاصله اضافه کنید و از عملگر += برای تلفیق آن با کد به دست آمده از فرهنگ لغت استفاده کنید. اگر حرف یک فضای سفید است، یک فضای اضافی به رمز اضافه کنید. کد مورس کلمات را با دو فاصله متوالی از هم جدا می کند.

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

تابعی به نام رمزگشایی اعلام کنید که پیام را به عنوان پارامتر ورودی می پذیرد. برای دسترسی به آخرین کاراکتر کد مورس، با استفاده از عملگر مختصر، یک فاصله اضافه کنید. برای نگهداری رشته های خالی، دو متغیر، رمزگشایی و citext را راه اندازی کنید. متغیر رمزگشایی جمله رمزگشایی متشکل از الفبای انگلیسی را نگه می‌دارد در حالی که شما از citext برای ذخیره هر حرف از کد مورس استفاده می‌کنید.

یک حلقه for را تکرار کنید که از هر حرف کد مورس عبور می کند. اگر حرف خالی نیست، یک متغیر شمارنده i مقداردهی اولیه کنید که تعداد فاصله ها را صفر نگه می دارد و کد مورس یک کاراکتر را در متن متن ذخیره می کند. در غیر این صورت، حرف یک فاصله است، پس شمارنده را یک عدد افزایش دهید.

اگر شمارنده برابر با دو باشد، به این معنی است که باید فضای سفید را به رمزگشای متغیر کلمه رمزگشایی شده اضافه کنید. در غیر این صورت، با استفاده از مقادیر آنها به کلیدها دسترسی پیدا کنید. برای انجام این کار، با استفاده از تابع آیتم ها، روی جفت های کلید-مقدار در فرهنگ لغت تکرار کنید. اگر citext برابر با مقدار باشد، کلید مربوطه را با استفاده از عملگر مختصر به متغیر رمزگشا اضافه کنید.

مطلب مرتبط:   Passkeys: نحوه ورود به GitHub بدون رمز عبور

در نهایت، citext را پاک کنید تا حرف بعدی را دریافت کنید و جمله رمزگشایی به دست آمده را به فراخوانی تابع برگردانید.

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

توابع را با مقداری ورودی نمونه تست کنید. با مقداردهی اولیه یک پیام متغیر به نام با کلمه یا جمله ای که می خواهید رمزگذاری کنید شروع کنید. از تابع بالا برای تبدیل تمام حروف به حروف بزرگ استفاده کنید و آن را به عنوان آرگومان به تابع encrypt ارسال کنید. کد مورس فقط شامل حروف بزرگ است که کلیدهای فرهنگ لغت هستند. این همچنین به جلوگیری از بررسی‌های غیرضروری زمان اجرا برای موارد معتبر کمک می‌کند.

برای مشاهده معادل کد مورس جمله اصلی، مقدار حاصل را چاپ کنید.

سپس، یک کد مورس را در متغیر پیام ذخیره کنید و آن را به تابع رمزگشایی ارسال کنید. نتیجه را چاپ کنید و بررسی کنید که درست است.

به جای هاردکد کردن ورودی، می‌توانید آن را با تابع ()input از کاربر بپذیرید.

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

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

خروجی مترجم کد مورس در پایتون

برنامه پایتون هر حرف از حروف الفبای انگلیسی را به معادل کد مورس خود ترجمه می کند و مطابق شکل آن را در صفحه خروجی ترمینال نمایش می دهد. اگر خروجی به‌دست‌آمده را کپی کنید و آن را برای رمزگشایی ارسال کنید، متن اصلی را که قبلا ارسال کرده‌اید دریافت خواهید کرد. این تأیید می کند که ترجمه کاملاً کار کرده است.

مطلب مرتبط:   3 پارادایم اصلی برنامه نویسی که باید بدانید

خروجی مترجم کد مورس در پایتون

برنامه های موبایل برای کد مورس

مترجم کد مورس به صورت رایگان در دسترس شماست. بیش از صدها برنامه کاربردی مانند Morse Mania، Morse Trainer، Morse Code Reader، Morse Code Keyboard و Morse Code Translator بر روی پلتفرم های مختلف موجود است. در کمال تعجب، حتی توسط GBoard – صفحه کلید Google – پشتیبانی می شود.

برای دسترسی به کد مورس در Gboard، نماد تنظیمات را در Gboard باز کنید، زبان‌ها را انتخاب کنید و روی انگلیسی (U.S.) ضربه بزنید. از میان گزینه ها به سمت راست بکشید و سپس کد مورس را انتخاب کنید. صفحه‌کلید شما اکنون از درج کد مورس همراه با خدمات دسترس‌پذیری مانند TalkBack، Switch Access یا Select to Speak پشتیبانی می‌کند.