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

4 سال پیش - خواندن 4 دقیقه

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

 

درود به همه !

 

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

 

امروز میخوایم  راجع به مورس صحبت کنیم . خب اول بگیم مورس چیه ؟

- کد مورس در واقع یه روش برای انتقال اطلاعاته که در اون حروف و کلمات داخل جمله تبدیل به کد هایی میشن که این کد ها تشکیل شده از نقطه (•) و خط (-) هستن .


مثلا کلمه ی Hossein رو اگه تبدیل به کد مورس کنیم میشه این :

•••• −−− ••• ••• • •• −•

 

جالبه نه !

در زیر تصویر الفبای مورس رو میبینید :

خب حالا مورس رو به روش های مختلف انتقال میدن و همچنین در طول تاریخ استفاده های زیادی هم ازش شده . یکی از جالب ترین هایی که ازش دیدم توی فیلم میان ستاره ای بود اگه یادتون باشه :)

من خودم خیلی مورس رو دوست دارم . چرا ؟ چون که به روش های خیلی زیادی میشه انتقالش داد . در واقع در هر روشی که بشه دو حالت نقطه و خط رو نشون داد کار راه میافته .

 

یکی از مهمترین روش های انتقال مورس روش تولید صدا یا مثلا ضربه زدنه . فرض کنید میخوایم با ضربه زدن روی میز با صدای تق تق تق ... یه کد مورس رو انتقال بدیم . برای اینکار یه سری قوانینی هست . یکی از اساسی ترین قوانینی که در این روش انتقال باید رعایت بشه میزان کشش یا دیرند ضربه هاست . برای مثال کشش ضربه ای که نشان دهنده ی نقطه (•) است یک واحد است و میزان کشش ضربه ای که نشان دهنده ی خط (-) است سه واحد است . یعنی هر ضربه ای که یک خط (-) را نشان میدهد از لحاظ کشش سه برابر کشش یک نقطه (•) است . از این طریق اون شخصی که داره گوش میده میتونه بفهمه که منظور شما از هر ضربه نقطه (•) است یا خط (-) !

این قاعده ای که گفتیم برای کشش بین هر نقطه یا خط بود . ما باید بعد از هر حرفی که به این روش انتقال دادیم نیز به مقداری مکس کنیم تا شنونده قادر به تشخیص و جدا کردن حروف از هم باشه وگرنه همه چی قاطی میشه . حدودا میگن فاصله ای که باید بین هر حرف مکس کنیم ۵ واحده . حتی بین هر کلمه هم باید مکس خاصی انجام داد تا شنونده بفهمه الان کلمه تموم شده . فاصله ی مکس بین هر کلمه هم فکر میکنم ۷ واحده .

اینا اساسی ترین قوانین انتقال به این روش بودن .

ما میتونیم کلی روش برای انتقال از خودمون در بیاریم . مثلا از طریق چشمک زدن . خاموش روشن شدن یه چراغ . بوق زدن :)

یا .... بستگی به خودتون داره

 

حالا میخوایم یه اسکریپتی بنویسیم که بیاد خودش برامون یه متن رو تبدیل به مورس کنه و همچنین با بوق زدن کد مورس اون پیام رو پخش کنه . :)

 

خب ما دوتا سورس داریم . یکی برا ویندوزه یکی برا لینوکس . تفاوت زیادی ندارن تنها تفاوتشون توی روش پخش صدای بوقه . داخل لینوکس از ابزار beep استفاده میکنیم . بنابراین اگه میخواین روی لینوکس باز کنید ابتدا اولش با دستور زیر ابزار beep رو نصب کنید  :

MrPython@debian:~$ sudo apt install beep


 

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

 

سورس لینوکس :

#!/usr/bin/python3
# MrPython.blog.ir
from os import system
from time import sleep MORSE_CODES = {"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" : "--..",        " " : " "}

def playSound(code):    for i in code:        if i == ".":            system("beep -l 100")

        elif i == "-":            system("beep -l 300")

        elif i == " ":            sleep(1/2)            return ("  ")    return code+" "        text = input("Text : ")
text = text.upper()
morsed = ""
for char in text:    morsed += playSound(MORSE_CODES[char])    sleep(300/1000)
morsed = morsed.replace(".","•")
morsed = morsed.replace("-","−")
print("{} : {}".format(text,morsed))

 

سورس ویندوز :

# MrPython.blog.ir
from winsound import Beep
from time import sleep MORSE_CODES = {"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" : "--..",        " " : " "}

def playSound(code):    for i in code:        if i == ".":            Beep(800,100)
        elif i == "-":            Beep(800,300)
        elif i == " ":            sleep(1/2)            return ("  ")    return code+" "        text = input("Text : ")
text = text.upper()
morsed = ""
for char in text:    morsed += playSound(MORSE_CODES[char])    sleep(300/1000)
morsed = morsed.replace(".","•")
morsed = morsed.replace("-","−")
print("{} : {}".format(text,morsed))


خب کد رو اگه بخوایم طبق روال عادی توضیح بدیم توی خط اول که کتابخونه هارو وارد کار کردیم و یه دیکشنری تعریف کردیم که تمامی حروف انگلیسی و معادل های مورسش رو داخلش داره . همچنین یه تابعی داریم به اسم playSound که معادل با  حروف مورس کد که نقطه یا خط هستش صدای بوق رو تولید میکنه و یه جایی از برنامه هم یه اینپوت گرفتیم که متن کاربر رو ازش میگیریم و بعدشم با توجه به دیکشنری کد ها تبدیلش میکنیم .

 

اینم از پست امشب  . از این تاریخ به بعد زود به زود پست میزاریم

امیدوارم استفاده شه .

 

یا حق !

2
کــارمـا :
165
سلام
بفرست

مشاهده نظرات بیشتر...
salamali