مجموعه آموزش ها و ترفند های پایتونی(6): آموزش ساخت ساعت زنگدار با پایتون


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

قدم اول: طرح ریزی پروژه

خب توی قدم اول هر پروژه‌ای شما باید یه طرح کلی از برنامه‌ای که میخواین بنویسید داشته باشین. این طرح کلی به شما کمک میکنه که یه تصویر شفاف از چیزی که میخواین بسازین داشته باشین. خیلیا این قدم رو نادیده میگیرن و یه راست میخوان برن سمت کدنویسی که خب تا حدودی میشه گفت اشتباهه و عجله کار شیطونه! به خاطر همین ما اول اومدیم سراغ این قدم. باید چیکار کنیم؟ ببینید ما میخوایم این برنامه رو بنویسیم:

1-از کاربر یه زمان بگیر

2-از این ورودی، ساعت، دقیقه و ثانیه رو جدا کن و توی متغیرها جدا ذخیره کن

3-هر لحظه زمان دقیق رو از کامپیوتر بگیر و توی متغیرهایی ساعت، دقیقه و ثانیه رو داشته باش

4-به محض اینکه ساعت کامپیوتر به زمانی که کاربر انتخاب کرده رسیدی یعنی: ساعت کامپیوتر == ساعت کاربر، دقیقه کامپیوتر == دقیقه کاربر، ثانیه کامپیوتر == ثانیه کاربر شد؛ یه پیغام نشون بده و یه آلارم هم پخش کن.

اگر خواستین میتونید اینو روی کاغذ هم رسم کنید:


بسیار خوب! حالا ما آماده‌ایم که پروسه ساخت ساعت زنگدار با پایتون رو شروع کنیم…!

قدم دوم: تحقیق راجب اینکه چه چیزایی نیاز داریم!

خب مسلما ما یه محیط برنامه‌نویسی میخوایم، پایتون حتما باید نصب شده باشه، یه صفحه کلید میخوایم!!! بله اینا رو توی هر پروژه‌ای باید داشته باشین اما برای این پروژه چی؟ آها! توی این قدم باید برین مثلا ببینید برای پخش صدا (یا همون آلارم) به چه کتابخونه‌ای نیاز داریم؟ و بیایم نصبش کنیم. یا مثلا برای گرفتن زمان کامپیوتر چه کتابخونه‌ای نیازه؟ اینا رو باید تحقیق کنید و تا حدودی هم راجبشون یاد بگیرین. حالا چون اینجا میخوایم سریع‌تر کار رو شروع کنیم و میدونم شما هم عجله دارین من بهتون میگم چیا نیازه!

  • برای گرفتن زمان از کامپیوتر : datetime
  • برای پخش صدا: playsound

کتابخونه datetime به صورت پیشفرض توسط پایتون نصب شده یعنی همین الان میتونید ازش استفاده کنید اما کتابخونه playsound رو باید نصب کنید. چطوری؟ خیلی راحته، اگه لینوکس یا مک هستین ترمینال رو باز کنید و یا اگه توی ویندوز هستید CMD رو باز کنید و بنویسید:

pip install playsound

و صبر کنید تا نصب بشه. یادتون نره باید اینترنت داشته باشین برای نصب! (فکر نمیکنم لازم به گفتنش بود ولی گفتم..!)

وقتی که کتابخونه نصب شد cmd یا ترمینال رو ببندید و حالا وقتشه که بریم قدم بعدی! قدم بعدی چیه؟ کدنویسی

قدم سوم: ایمپورت کتابخونه‌ها و گرفتن زمان از کاربر

خب حالا یه فایل پایتونی بسازین و باز کنید. توی اولین مرحله از کدنویسی باید کتابخونه‌هایی که لازم داریم رو ایمپورت کنیم. برای اینکار مینویسیم:

from datetime import datetime
from playsound import playsound

با این دو دستور ما کتابخونه‌های playsound و datetime رو وارد برنامه کردیم و حالا میتونیم ازشون استفاده کنیم.

حالا باید از کاربر یه زمان بگیریم. چگونه؟! با تابع input ورودی میگیریم تو پایتون پس باید بنویسیم:

alarm_time = input(“Enter Alarm Time (HH:MM:SS)\n”)

اینجا به کاربر میگیم که زمان رو به شکل HH:MM:SS وارد کن. اون n\ هم به خاطر اینه که ورودی رو بیاد توی خط بعدی بگیره که شلوغ نشه!

خب حالا با توجه به طرح کلی که کشیدیم الان وقت چیه؟ آفرین! وقت اینه که ساعت و زمان و دقیقه رو از این چیزی که کاربر وارد کرده جدا کنیم. در واقع الان چیزی که کاربر وارد کرده اینطوریه: “08:30:00” و خب مثلا ما میخوایم بگیم که 08 مربوط به ساعت میشه، 30 مربوط به دقیقه و..

خب اینجا یه آموزش کوچیک بدم. ببینید ما میتونیم رشته‌ها رو مثلا بگیم از حرف اول تا حرف پنجم نشون بده! به این کار میگن Slicing یا همون تیکه تیکه کردن. مثلا فرض کنید این رشته رو داریم: “Tameshk Team” حالا میتونیم بگیم که: [1,5] یعنی حرف 1 (یا ایندکس یکم چون همونطور که میدونید توی برنامه‌نویسی از صفر میشماریم) تا حرف 5 (یا ایندکس 5) رو بگیر. البته توی پایتون همیشه عدد دومیه در نظر گرفته نمیشه یعنی اینجا تا حرف چهارم یا ایندکس چهارم چاپ میشه…

اینجا هم همینطوریه. باید بگیم مثلا از [0,2] مربوط به ساعت هستش. پس:

alarm_hour = alarm_time[0:2]
alarm_minute = alarm_time[3:5]
alarm_second = alarm_time[6:8]

امیدوارم که متوجه منظورم شده باشین.

خب حالا کاربر زمان رو وارد کرده! پس بیاین یه پیغام بهش بدیم که مطمئن بشه آلارمش ست شده:

print(“Setting Alarm…”)

حالا وقت چیه؟ باید از روی طرح و نقشه کلی‌مون بگیم! ببینید چقدر این طرح مهمه… هر لحظه بهمون میگه باید چیکار کنیم و این خیلی بهمون کمک میکنه.. الان وقت اینه که لحظه به لحظه زمان دقیق رو از کامپیوتر بگیریم. پس مینویسیم:

now = datetime.now()

خب این زمان دقیق رو از کامپیوتر میگیره و توی متغیر now ذخیره میکنه اما..

اما این کد هر لحظه که اجرا نمیشه! فقط یه بار اجرا میشه و فقط همون زمان رو توی خودش ذخیره میکنه… ما میخوایم این کد مدام تکرار بشه و زمان دقیق دستش باشه پس باید بیایم اینو توی یه حلقه تکرار بنویسیم که هر لحظه اجرا بشه. حلقه تکرار بی‌نهایت while True اینجا خیلی به کارمون میاد پس:

while True:
now = datetime.now()

به این ترتیب این کد برای ما هر لحظه تکرار میشه! حالا مشابه کاری که برای زمانی که کاربر وارد کرد انجام دادیم، یعنی اومدیم ساعت و دقیقه و ثانیه رو جدا کردیم برای زمانی که از کامپیوتر میگیریم هم باید بیایم و همین کار رو انجام بدیم. اینجا ما توی کتابخونه datetime یه متد داریم به اسم strftime که میتونیم باهاش زمان رو به رشته تبدیل کنیم:

c_hour = now.strftime(“%H”)
c_minute = now.strftime(“%M”)
c_second = now.strftime(“%S”)

همونطور که باید حدس بزنید %H برای قسمت ساعت از زمان هستش، %M برای قسمت دقیقه و %S برای بخش ثانیه.

دقت کنید… خیلی دقت کنید که ما این کدها رو هنوزم باید داخل حلقه بنویسیم. اگر نمیدونید چرا ؟! بهش فکر کنید! ما هر لحظه زمان رو از کامپیوتر میگیریم و همون لحظه هم ساعت و دقیقه و ثانیه رو جدا میکنیم! خیلی منطقیه

خب ما زمان کاربر رو داریم و زمان لحظه‌ای کامپیوتر رو هم داریم. تنها کاری که باید انجام بدیم اینه که مدام (یعنی هر لحظه) این دو زمان رو با هم مقایسه کنیم و اگه با هم برابر بودن دیگه اون کارهایی که گفتیم یعنی نشون دادن پیغام، زنگ زدن و… رو انجام بدیم. پس این کدها رو هم باید توی بلاک حلقه بنویسید:

if alarm_hour == c_hour:
if alarm_minute == c_minute:
if alarm_second == c_second:
print(“Pashooooo!”)
playsound(“Beep.mp3”)
break

اینجا چه کردیم؟! گفتیم که هر وقت ساعت‌ها، دقیقه‌ها و ثانیه‌های زمان کامپیوتر و زمان وارد شده توسط کاربر یکی شد، پیغام pashoooo! رو نشون بده و یه صدای بیپ بیپ هم پخش کن و درنهایت از حلقه هم خارج شد (break) اینطوری دیگه کارمون تموم میشه.

البته فکر نکنید این صدای Beep.mp3 رو خود کتابخونه داره‌ها..! نخیر! این فایل صوتی رو باید خودتون بذارین کنار برنامه پایتونی‌تون و بعدش از اینجا صداش بزنید. میتونید هر آهنگی که دوست دارین رو امتحان کنید...

تبریک میگم! شما ساعت زنگدار خودتون رو نوشتین… بهش اعتماد کنید! برنامه رو اجرا کنید و یه ساعت تنظیم کنید و برین یه چرت بزنید! برنامه شما رو سر ساعت بیدار میکنه البته حواستون باشه صدای کامپیوتر mute نباشه :))) درنهایت امیدوارم که از ساخت ساعت زنگدار با پایتون لذت برده باشین و چیزای خوبی از این آموزش یاد گرفته باشید.

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

فکر نمی کنم چیزی رو جا انداخته باشم پس به رسم همیشگی؛ تا اینجا که اومدید:

لایک که از واجباته ?

کامنت هم اگه سوالی داشتید حتما بنویسید تا جایی که بشه جواب میدم =}

اگه هم نداشتید صرفا بنویسید عالی بود دل هماهنگ کننده ویرگول شاد بشه =))))

حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?

کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنید

راستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!

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

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

© تمشک