پروژه های پایتون برای تمرین برنامه نویسی – ۱۲ تمرین از ساده تا دشوار

مصطفی رشیدی
مصطفی رشیدی
۱۴۰۵/۰۸/۴
۴۳ دقیقه
۳۷
آموزش متنی جامع
استفاده از پروژه های پایتون برای تمرین، مهارت‌های برنامه نویسی ما را قوی‌تر می‌کند. مهم‌ترین ویژگی این تمرین‌ها کمک به کسب تجربه عملی است. این پروژه ها می‌توانند از ابزارها و بازی‌های ساده تا وب‌اپلیکیشن‌ها و نرم‌افزارهای دسکتاپ را پوشش بدهند. فرض کنیم که می‌خواهیم برنامه‌ای برای نمایش اطلاعات آب و هوایی به کاربر در دسکتاپ بنویسیم. این برنامه شامل ساخت رابط کاربری، استفاده از API برای برقراری تماس با وب‌سایت‌های هواشناسی، ارسال درخواست و دریافت پاسخ در فضای آنلاین و حتی بخشی برای احراز هویت کاربر اصلی پروژه خواهد بود. هر کدام از این بخش‌ها از فناوری‌های مختلفی استفاده می‌کنند. برای همین است که می‌گوییم حل پروژه های عملی به درک سوالات مربوط به دنیای واقعی برنامه نویسی، کسب مهارت در حل مسئله و درک متدهای پایتون کمک می‌کنند.
آنچه در این مطلب می‌آموزید:
  • - نحوه پیاده‌سازی بازی‌های عدد ۲۱ و ۲۰۴۸ و برنامه ضبط صدا را یاد می‌گیرید.
  • - با ساخت ربات اینستاگرام و ابزارهای ورود خودکار و کلیک خودکار آشنا می‌شوید.
  • - نحوه کنترل اسکرول صفحه با تشخیص رنگ و استفاده از وب‌اسکرپینگ را یاد می‌گیرید.
  • - ساخت ماشین‌حساب گرافیکی با Tkinter و رسم صفحه شطرنج با Turtle را تمرین می‌کنید.
  • - نحوه استخراج و ذخیره فریم‌های ویدئو با OpenCV را یاد می‌گیرید.
  • - با پیاده‌سازی پروژه‌های وب با جنگو و استخراج اطلاعات تماس از وب آشنا می‌شوید.
پروژه های پایتون برای تمرین برنامه نویسی – ۱۲ تمرین از ساده تا دشوار
فهرست مطالب این نوشته
997696

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

پروژه های پایتون برای تمرین

در این مطلب می‌خواهیم ۱۲ پروژه مختلف پایتون را بررسی کنیم. این پروژه ها از ساده تا دشوار متغیر هستند. برای مرتب کردن پروژه ها آن‌ها را در چند دسته اصلی قرار می‌دهیم.

پروژه های پایتون برای تمرین
پروژه های پایتون برای تمرین

در ادامه این مطلب،‌ سعی کرده‌ایم که برای هر کدام از دسته‌های بالا چند پروژه را حل کنیم.

پروژه های پایتون ساده برای تازه‌کارها

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

تمرین ۱: بازی عدد ۲۱

به این بازی، بازی «بیست به علاوه یک» نیز گفته می‌شود. این بازی به شکل چندنفره هم قابل انجام است اما در این بخش می‌خواهیم بازی را به صورت دونفره (کاربر در مقابل کامپیوتر) پیاده‌سازی کنیم.

دستورالعمل بازی به شکل زیر است:

  1. نوبت‌دهی: بازی بین دو بازیکن انجام می‌شود و هر بازیکن در نوبت خود بازی می‌کند.
  2. انتخاب اعداد: هر بازیکن در نوبت خود می‌تواند از ۱ تا ۳ عدد را اعلام کند.
  3. ترتیب اعداد: اعداد باید پشت سر هم و به ترتیب باشند. برای مثال، اعلام اعداد ۵، ۶ و ۷ مجاز است. اگر بازیکنی از یک عدد عبور کند، از بازی حذف می‌شود و می‌بازد.
  4. شروع شمارش: شمارش از عدد ۱ آغاز می‌شود و به ترتیب رو به بالا ادامه پیدا می‌کند. بازیکن اول باید بازی را با عدد ۱ شروع کند.
  5. شرط باخت: بازیکنی که مجبور شود عدد ۲۱ را اعلام کند، بازنده بازی خواهد بود.
پیاده‌سازی مراحل مختلف بازی ۲۱ با پایتون
پیاده‌سازی مراحل مختلف بازی ۲۱ با پایتون

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

پیاده سازی بازی عدد ۲۱

در ابتدا می‌خواهیم تابع کمکی را تعریف کنیم که در طول بازی برای اعتبار سنجی مقادیر ورودی توسط کاربر، تعیین حرکت کامپیوتر و مدیریت جریان بازی به کار برده می‌شود. در این پروژه تمرینی پایتون از ساختار شرطی If-else در پایتون و حلقه while استفاده کرده‌ایم.

در کادر پایین، نکات مهم نوشته شده در کدهای بالا را توضیح داده‌ایم.

  1. تابع nearestMultiple(num)  عدد بعدی را که بر 4 بخش‌پذیر است، محاسبه می‌کند. کامپیوتر با استفاده از این مقدار می‌تواند از روش خود برای تشخیص بازنده بازی استفاده کند.
  2. تابع lose1()  پیام باخت را نمایش می‌دهد و با اجرای دستور exit(0)  برنامه را می‌بندد. این تابع، فقط زمانی که بازیکن بازی را ببازد یا ورودی نامعتبری را وارد کند، اجرا می‌شود.
  3. تابع check(xyz)  بررسی می‌کند که اعداد وارد شده پشت سر هم باشند. این بررسی با سنجش اختلاف بین اعداد مجاور انجام می‌شود. اختلاف هر دو عدد مجاور باید برابر با ۱ باشد.

پیاده‌سازی کدهای بدنه و جریان بازی

در مرحله بعد با ساخت تابع اصلی پروژه می‌خواهیم مقدار اولیه بازی را بسازیم. اول از همه باید متغیر‌های مورد نیاز را راه‌اندازی کنیم. سپس به بازیکن انسانی اجازه می‌دهیم که نوبت خود را در بازی (نفر اول یا دوم)‌ انتخاب کند.

در کادر پایین، نکات مهم نوشته شده در کدهای بالا را توضیح داده‌ایم.

  1. تابع start1()  روند بازی را کنترل می‌کند.
  2. فهرست xyz  تمام عددهایی را که در طول بازی گفته می‌شوند نگه می‌دارد.
  3. متغیر last  آخرین عدد وارد شده را پیگیری می‌کند.
  4. از بازیکن می‌پرسیم که می‌خواهد اول بازی کند (F) یا دوم (S).

پیاده سازی منطق بازی

الان زمان پیاده‌سازی منطق اصلی بازی رسیده است. در این منطق فرایند نوبت‌دهی به بازیکن و کامپیوتر اجرا می‌شود. داده‌های ورودی اعتبارسنجی می‌شوند. بازی تا زمان مشخص شدن برنده و بازنده ادامه پیدا می‌کند. توجه کنید که این کد در داخل تابع start1() نوشته می‌شود و دستور خط اول if chance.upper() == "F": به شکل دقیق زیر دستور chance = input('> ') از کادر بالا قرار می‌گیرد.

در کادر پایین، نکات مهم نوشته شده در کدهای بالا را توضیح داده‌ایم.

  1. اگر بازیکن گزینه F  را انتخاب کند، بازی را با وارد کردن یک تا سه عدد متوالی شروع می‌کند و سپس رایانه حرکت خود را انجام می‌دهد.
  2. اگر بازیکن گزینه S  را انتخاب کند، رایانه اول شروع می‌کند و هر زمان که امکان داشته باشد، با کمک تابع nearestMultiple()  عدد را به چهار، هشت، دوازده، شانزده یا بیست می‌رساند.
  3. تابع check()  درست بودن و پشت سر هم بودن اعداد بازیکن را می‌سنجد.
  4. اگر بازیکن، اعداد نادرستی وارد کند یا عدد بیست و یک را بگوید، تابع lose1()  فراخوانی می‌شود. این تابع بازی را تمام می‌کند.
تصویر پروژه برنامه‌نویسی پایتون با عدد درخشان ۲۱ و مهره‌های بازی - پروژه های پایتون برای تمرین

کدهای مربوط به جریان اجرای بازی

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

در کادر پایین، نکات مهم نوشته شده در کدهای بالا را توضیح داده‌ایم.

  1. متغیر game  برنامه را در حال اجرا نگه می‌دارد.
  2. حلقه تکرار پی در پی از بازیکن می‌پرسد که آیا می‌خواهد بازی تازه‌ای را شروع کند یا خیر.
  3. اگر بازیکن بله بگوید، تابع start1()  فراخوانی می‌شود.
  4. اگر بازیکن خیر بگوید، برنامه می‌پرسد که آیا می‌خواهد از بازی خارج شود یا به بازی ادامه دهد.

تمرین ۲:ساخت ابزار ضبط صدا با پایتون

در این بخش از پروژه های پایتون برای تمرین می‌خواهیم ابزاری برای ضبط صدا بسازیم. یکی از بهترین ماژول‌ها برای اجرای این مینی پروژه پایتون، ماژول sounddevice  است. ماژول sounddevice توابعی برای ضبط و پخش آرایه‌های Numpy شامل سیگنال‌های صوتی دارد. قبل از کار با sounddevice  باید آن را به کمک دستور زیر نصب کنیم.
pip install sounddevice

در این پروژه از ماژول‌های wavio  و scipy  هم برای ذخیره کردن فایل‌های صوتی در قالب‌های مرتبط استفاده خواهیم کرد. برای نصب این ابزارها می‌توانیم از دستورات زیر استفاده کنیم.

pip install wavio

pip install scipy

با نصب کتابخانه‌های بالا مرحله تهیه پیش نیاز‌ها به پایان رسیده است. در ادامه کدهای اصلی پروژه را اجرا خواهیم کرد.

مهم‌ترین گام‌ها برای پیاده‌سازی برنامه ضبط صدا
مهم‌ترین گام‌ها برای پیاده‌سازی برنامه ضبط صدا
  • گام اول: قبل از هر کاری باید کتابخانه‌های کاربردی پروژه را در فضای کدنویسی ایمپورت کنیم.
  • گام دوم: در مرحله بعد باید چند متغیر اصلی را تعریف کنیم.
    1. نخستین متغیر، نرخ نمونه‌برداری صوت است (که در بیشتر موارد بر روی ۴۴۱۰۰ یا ۴۸۰۰۰ فریم در ثانیه تنظیم می‌شود.).
    2. متغیر دوم، مدت زمان ضبط است. مدت زمان را باید بر حسب ثانیه مشخص کنیم تا ضبط صدا پس از گذشت زمان تعیین شده متوقف شود.
  • گام سوم: الان آماده هستیم که کدهای مربوط به ضبط را بنویسیم. این کدها از صداهای ضبط شده، آرایه نامپای می‌سازند. هر کانال، مسیری مستقل برای ذخیره سیگنال صوتی است. تعداد کانال‌ها در این مثال می‌تواند ۱ یا ۲ باشد.
  • گام چهارم: الان کارهای مربوط به ضبط صدا را به پایان رسانده‌ایم. نوبت به ذخیره کردن صدای ضبط شده رسیده است.
    • برای ذخیره کرده فایل صوتی می‌توانیم از ماژول wavio  یا scipy  استفاده کنیم. در پایین روش استفاده از هر دو ماژول‌ را به صورت جداگانه آموزش داده‌ایم.
    • برای تبدیل آرایه نامپای به فایل صوتی، از تابع write  در کتابخانه scipy.io.wavfile  استفاده می‌کنیم.

در کادر پایین، نسخه کامل کدهای این پروژه پایتون برای تمرین را نوشته‌ایم.

تمرین ۳: ساخت بازی ۲۰۴۸ در پایتون

در این قسمت از پروژه های پایتون برای تمرین می‌خواهیم روش پیاده‌سازی بازی ۲۰۴۸ را در محیط خط فرمان بررسی کنیم. بازی ۲۰۴۸ پازل تک‌نفره‌ای است که در آن کاشی‌هایی با مقادیر یکسان با هم ترکیب می‌شوند تا کاشی جدیدی با ارزش ۲۰۴۸ ساخته شود. این بازی را می‌توان با استفاده از ماتریس ۴ در ۴ در پایتون پیاده‌سازی کرد، به طوری که تمامی عملیات بازی از طریق محیط کنسول و بدون نیاز به رابط گرافیکی انجام شود.

این پروژه از دو فایل پایتون تشکیل شده است:

  • فایل logic.py: منطق بازی شامل حرکت کاشی‌ها، ادغام آن‌ها، تولید تصادفی کاشی‌های جدید و بررسی وضعیت بازی را پیاده‌سازی می‌کند.
  • فایل 2048.py: بازی را راه‌اندازی می‌کند، ورودی‌های کاربر را می‌گیرد و صفحه به‌روزرسانی‌شده بازی را نمایش می‌دهد.
رابط کاربری بازی پازلی ۲۰۴۸ با زبان پایتون روی مانیتور برنامه‌نویسی

خلاصه دستورالعمل بازی

ابتدا توضیح کوتاهی درباره خلاصه روش انجام بازی می‌نویسیم.

  1. ابتدا صفحه جدولی به صورت چهار در چهار داریم که می‌توان آن را با هر عددی پر کرد. در آغاز، دو خانه تصادفی با عدد 2 پر می‌شوند و بقیه خانه‌ها خالی می‌مانند.
  2. بازیکنان می‌توانند یکی از چهار کلید را برای جابه‌جا کردن کاشی‌ها فشار دهند:
    • کلید W  یا w  برای حرکت به بالا
    • کلید S یا s  برای حرکت به پایین
    • کلید A  یا a  برای حرکت به چپ
    • کلید D  یا d  برای حرکت به راست
  3. پس از فشرده شدن کلیدها و حرکت دادن خانه‌ها، یکی از خانه‌های خالی به شکل تصادفی با عدد دو پر می‌شود.
  4. با تکرار این روند، باید با جمع کردن اعداد مشابه، آن‌ها را دو برابر کنیم تا در نهایت یکی از خانه‌ها به عدد ۲۰۴۸ برسد. اگر توانستیم این کار را انجام دهیم، برنده می‌شویم.
  5. اما اگر در جریان بازی هیچ خانه خالی برای پر شدن با عدد جدید باقی نمانده باشد، بازی به پایان می‌رسد و می‌بازیم.

پیاده سازی بازی

برای پیاده‌سازی چهار حرکت اصلی بازی از توابع compress()  و merge()  و reverse()  و transpose()  استفاده خواهیم کرد. در کادر پایین، تمام توابع کمکی مورد نیاز برای اجرای منطق بازی را نوشته‌ایم. این فایل را با نام «logic.py» ذخیره کنید.

در فهرست زیر،‌ کدهای مهم کادر بالا را توضیح داده‌ایم.

  1. تابع start_game()  صفحه بازی چهار در چهار را با صفرها می‌سازد، نخستین عدد 2 را در یکی از خانه‌های خالی تصادفی می‌گذارد و کلیدهای کنترل حرکت را نشان می‌دهد.
  2. تابع add_new_2(mat)  عدد 2 را به یک خانه خالی تصادفی اضافه می‌کند. اگر خانه انتخابی پر باشد، تابع آن قدر تلاش می‌کند تا خانه خالی پیدا شود.
  3. تابع get_current_state(mat)  اگر کاشی با ارزش ۲۰۴۸ پیدا شود عبارت «برنده» (WON) را برمی‌گرداند. اگر خانه‌های خالی یا امکان ترکیب معتبر وجود داشته باشد مقدار «بازی تمام نشده» (GAME NOT OVER) و اگر هیچ حرکت معتبری نمانده باشد مقدار «باخته» (LOST) را برمی‌گرداند.
  4. تابع move_left(grid)  کاشی‌ها را به سمت چپ فشرده می‌کند، کاشی‌های مجاور با ارزش‌های یکسان را با هم ترکیب می‌کند و دوباره جدول را فشرده می‌کند.
  5. تابع move_right(grid)  جدول را معکوس می‌کند، حرکت به سمت چپ را روی آن انجام می‌دهد و دوباره جدول را معکوس می‌کند.
  6. تابع move_up(grid)  ابتدا سطرها و ستون‌های جدول را جابه‌جا می‌کند تا بتواند با استفاده از تابع move_left()، حرکت به سمت بالا را اجرا کند. سپس جدول را به حالت اولیه برمی‌گرداند و جدول به‌روز شده را همراه با متغیر changed  برمی‌گرداند.
  7. تابع move_down(grid)  ابتدا سطرها و ستون‌های جدول را جابه‌جا می‌کند تا بتواند با استفاده از تابع move_right()، حرکت به سمت پایین را اجرا کند. سپس جدول را به حالت اولیه برمی‌گرداند و جدول به‌روز شده را همراه با متغیر changed  برمی‌گرداند.
  8. تابع compress(mat)  تمام کاشی‌های غیر صفر را به سمت چپ جابه‌جا می‌کند.
  9. تابع merge(mat)  کاشی‌های مجاور با مقادیر یکسان را با هم ترکیب می‌کند.
  10. تابع reverse(mat)  هر سطر از جدول را معکوس می‌کند.
  11. تابع transpose(mat)  سطرها و ستون‌های جدول را با هم جابه‌جا می‌کند.
  12. تابع findEmpty(mat)  نخستین خانه خالی را در جدول پیدا کرده و برمی‌گرداند.
میز برنامه‌نویسی پایتون با نمایش بازی پازلی و خطوط کد رنگارنگ روی نمایشگر

در کادر پایین، هم کدهای مربوط به فایل اصلی اجرای بازی را نوشته‌ایم. این فایل را با نام «2048.py» ذخیره کنید.

در فهرست زیر،‌ کدهای مهم کادر بالا را توضیح داده‌ایم.

  1. تابع logic.start_game()  صفحه بازی را راه‌اندازی می‌کند، نخستین عدد 2 را در خانه خالی تصادفی می‌گذارد و کلیدهای کنترل حرکت را نمایش می‌دهد.
  2. تابع logic.move_up(mat)  همه کاشی‌ها را با فشرده‌سازی و ترکیب کردن، طبق قوانین بازی به سمت بالا حرکت می‌دهد.
  3. تابع logic.move_down(mat)  همه کاشی‌ها را با فشرده‌سازی و ترکیب کردن، طبق قوانین بازی به سمت پایین حرکت می‌دهد.
  4. تابع logic.move_left(mat)  همه کاشی‌ها را با فشرده‌سازی و ترکیب کردن طبق قوانین بازی به سمت چپ حرکت می‌دهد.
  5. تابع logic.move_right(mat)  همه کاشی‌ها را با فشرده‌سازی و ترکیب کردن طبق قوانین بازی به سمت راست حرکت می‌دهد.
  6. تابع logic.get_current_state(mat)  بررسی می‌کند که آیا بازیکن برنده شده است، بازی باید ادامه پیدا کند یا هیچ حرکت معتبری باقی نمانده است.
  7. تابع logic.add_new_2(mat)  پس از هر حرکت معتبر، عدد 2 جدید را در یکی از خانه‌های خالی تصادفی قرار می‌دهد.
  8. اگر کاربر کلیدی به جز W  یا A  یا S  یا D  (چه بزرگ و چه کوچک) وارد کند، برنامه عبارت «Invalid Key Pressed» را چاپ می‌کند.

چطور پایتون را در فرادرس بگیریم؟

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

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

در پایین چند مورد از فیلم‌های مربوط به مجموعه آموزشی پایتون را معرفی کرده‌ایم.

در ادامه چند مورد پیشرفته از پروژه های پایتون برای تمرین را بررسی خواهیم کرد.

پروژه های پیشرفته پایتون

اجرای پروژه های پیشرفته تاثیر زیادی در ارتقای مهارت‌های برنامه نویسی پایتون دارند. به عنوان چند نمونه از پروژه های پایتون برای تمرین، می‌توانید ربات‌هایی برای توییتر، واتساپ و تلگرام بسازید. همچنین می‌توانید ابزارهایی مانند «ربات لاگین خودکار به حساب کاربری» (Auto Login Bot) یا «کلیک‌ خودکار» (Auto Clicker) را طراحی کنید. این پروژه ها کمک می‌کنند تا هم‌زمان با ساخت ابزارهایی برای کارهای واقعی، مهارت‌های پیشرفته‌تری در پایتون بیاموزید.

تمرین ۴: ربات اینستگرام

با استفاده از ربات اینستاگرام می‌توانیم کارهایی مانند لایک کردن پست‌ها، گذاشتن کامنت و دنبال کردن پروفایل‌هایی را به صورت خودکار انجام دهیم که از هشتگ‌های مشخصی در پست‌های خود استفاده می‌کنند. برای پیاده‌سازی این پروژه از کتابخانه InstaPy و مرورگر فایرفاکس استفاده می‌کنیم، زیرا نسخه‌های جدید InstaPy از مرورگر کروم پشتیبانی نمی‌کنند.

با کمک دستور زیر می‌توانید ماژول InstaPy رو داخل سیستم نصب کنید.

pip install instapy

قبل از هر کاری با کدهای زیر، اسکریپت پایتون درست می‌کنیم. بجای عبارت‌های your username  نام کاربری و your password  رمز عبور خود را وارد می‌کنیم. به محض اینکه این اسکریپت را اجرا کنیم، پایتون وارد حساب کاربری می‌شود.

بعد از متصل شدن InstaPy  به اینستاگرام می‌توانیم وضعیت اتصال اینترنت و سرور‌های اینستاگرام رو هم بررسی کنیم. البته متصل شدن InstaPy  به اینستاگرام چند دقیقه طول می‌کشد.

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

لایک کردن پست‌ها

کد زیر برای لایک‌کردن پست‌هایی است که از هشتگ‌های #dance  یا #mercedes  استفاده کرده‌اند. برای اجرای این عملیات از تابع like_by_tags()  کمک می‌گیریم.

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

تصویر ربات اتوماسیون در کنار لپ‌تاپ با نمادهای پایتون و اینستاگرام برای خودکارسازی فعالیت‌های شبکه‌های اجتماعی - پروژه های پایتون برای تمرین

تابع دیگری هم به نام set_dont_like()  وجود دارد. می‌توانیم از این تابع برای جلوگیری از لایک کردن پست‌هایی استفاده کنیم که هشتگ‌های نامناسب دارند یا در توضیحات یا نظرات نویسنده پست، واژه‌های نامناسب به کار برده شده‌اند.

نوشتن کامنت

برای نوشتن کامنت در اینستاگرام با کمک InstaPy  باید از تابع set_do_comment()  (برای فعال کردن امکان کامنت‌گذاری) استفاده کنیم. سپس با استفاده از تابع set_comments()  به ربات می‌گوییم که از چه کامنت‌هایی استفاده کند.

فالو کردن

با استفاده از تابع set_do_follow()  می‌توانیم نویسنده‌های پست‌ها را هم فالو کنیم.

تنظیم تعامل

در مرحله بعد، باید از تابع set_user_interact() استفاده کنیم تا رفتار واقعی ربات پس از یک بار تعامل با رابط کاربری مشخص شود. در این تابع، مقدار amount تعداد پست‌هایی را مشخص می‌کند که ربات در هر پروفایل با آن‌ها تعامل خواهد داشت.

نکته: ابتدا باید «تنظیمات پیکربندی» (Configuration) را انجام دهید و سپس بخش فعالیت‌ها را فراخوانی کنید. در ضمن، باید تنظیمات «تعامل» (Interaction) را نیز مشخص کنید. یعنی اینکه پس از پیکربندی سشن، باید فعالیت‌های مورد نظر خود را انجام دهید. در غیر این صورت، ربات فقط پست‌ها را لایک می‌کند، ولی کامنت نمی‌گذارد یا کاربران را دنبال نمی‌کند.

پایان کار ربات

بعد از به پایان رساندن عملیات و نوشتن دستورات مربوط به ربات خیلی مهم است که سشن باز شده را ببندیم. برای این کار فقط کافی است که از دستور end()  استفاده کنیم.

تمرین ۵: اشتراک‌گذاری فایل

در این بخش یاد می‌گیریم چگونه با استفاده از پایتون، اپلیکیشنی ساده‌ برای اشتراک‌گذاری فایل بسازیم. در این پروژه از ماژول‌ها و کتابخانه‌های زیر استفاده می‌کنیم:

  • ماژول HTTPServer  سروری بر پایه socketserver  است. این ماژول با استفاده از سوکت HTTP، اتصال‌ها را برقرار می‌کند و به درخواست‌ها گوش می‌دهد.
  • ماژول socketserver  فرایند نوشتن سرورهای شبکه را ساده‌تر می‌کند.
  • ماژول webbrowser  امکان باز کردن و نمایش اسناد وب را فراهم می‌کند. برای این کار می‌توانیم تابع open()  را فراخوانی کنیم.
  • ماژول pyqrcode  امکان ساخت بارکد «کیو آر کد» (QR Code) را تنها با دو خط کد فراهم می‌کند.
  • ماژول OS امکان تعامل با سیستم عامل را به پایتون می‌دهد. با استفاده از این ماژول می‌توان فایل‌ها را باز کرد، با مسیر فایل‌ها کار کرد و تمام خطوط فایل‌ها را در خط فرمان خواند.
  • کتابخانه PyPNG امکان خواندن و نوشتن فایل‌های تصویری PNG را با استفاده از پایتون فراهم می‌کند.

نصب ماژول‌های شخص ثالث

برای نصب ماژول‌های موردنیاز، دستورهای زیر را در خط فرمان اجرا کنید:

pip install pyqrcode

pip install pypng

وارد کردن ماژول‌های موردنیاز

برای اجرای پروژه، ماژول‌های زیر را وارد کنید:

  • ماژول‌های http.server  و socketserver  برای راه‌اندازی سروری به کار می‌روند که از طریق مرورگر می‌توانید به آن دسترسی داشته باشید.
  • ماژول pyqrcode  برای ساخت کیو آر کد به کار برده می‌شوند.
  • ماژول png  برای تبدیل QR Code به فایل PNG استفاده می‌شود.
  • از ماژول os هم برای تعامل با سیستم‌عامل استفاده خواهیم کرد.
تصویر اپلیکیشن اشتراک‌گذاری فایل با پایتون و فلش درخشان انتقال فایل به رایانه دیگر

کدهای اجرای پروژه در پایین نوشته شده‌اند.

فایل پایتون حاوی کد بالا را روی رایانه خود باز کنید. با این کار،‌ «بارکد کیوآر» (QR Code) تولید خواهد کرد. اکنون یا کیو آر کد را اسکن کنید و یا نشانی IP نمایش‌داده شده در «شل پایتون» (Python Shell) را در مرورگر تلفن همراه خود وارد کنید. به سادگی با اسکن کردن این کد یا رفتن به آدرس IP داده شده در مرورگر موبایل می‌توانید بین کامپیوتر و موبایل خود فایل‌ها را جابه‌جا کنید.

نکته ۱: توجه کنید که این کدها فقط برای اتصال بین دو سیستم مختلف بر روی یک شبکه محلی استفاده می‌شوند. امکان استفاده از آن‌ها بر روی اینترنت وجود ندارد. برای دسترسی از طریق اینترنت، می‌توانید وب‌سرور را به شبکه خصوصی VPN متصل کنید. در این حالت، آدرس QR باید از طریق VPN قابل دسترسی باشد، نه آدرس محلی که این کد به‌تنهایی تشخیص می‌دهد.

نکته ۲: فقط فایل‌هایی توسط سیستم مقصد مشاهده می‌شوند که در پوشه OneDrive کامپیوتر خودمان ذخیره کرده‌ایم.

پروژه های وب اسکرپینگ

وب اسکرپینگ به برنامه نویسان کمک می‌کند تا اطلاعات با ارزشی را از وب‌سایت‌ها بدست بیاورند. «وب اسکرپینگ» (Web Scraping) عملیات جمع‌آوری داده از سایت‌ها را خودکارسازی می‌کند. در این بخش، دو پروژه حرفه‌ای و کوتاه درباره وب‌اسکرپینگ را بررسی خواهیم کرد.

تمرین ۶: اسکرول صفحه با تشخیص رنگ در پایتون

برای اجرای این پروژه از دو ماژول زیر کمک می‌گیریم.

  • OpenCV
  • PyAutoGUI

برای انجام برخی کارها در کامپیوتر، لازم نیست حتما از ماوس یا تاچ‌پد استفاده کنید. برای مثال، می‌توانید با استفاده از پایتون و وب‌کم، اسکرول صفحه را کنترل کنید. در این پروژه از ماژول OpenCV برای تشخیص رنگ و از ماژول PyAutoGUI برای کنترل اسکرول استفاده می‌کنیم. برنامه تصویر وب‌کم را به صورت پیوسته بررسی می‌کند و با تشخیص ناحیه‌ای به رنگ مشخص، حرکت آن را دنبال می‌کند. سپس با توجه به جهت حرکت ناحیه رنگی، صفحه را به بالا یا پایین اسکرول می‌کند.

ماژول‌های مورد نیاز برای اسکرول صفحه با تشخیص رنگ در پایتون
ماژول‌های مورد استفاده برای اسکرول صفحه با تشخیص رنگ در پایتون

در کار زیر کدهای مربوط به این برنامه را نوشته‌ایم.

مهم‌ترین مراحل اجرای کدهای بالا را در فهرست پایین توضیح داده‌ایم.

  1. ابتدا ماژول‌های موردنیاز را وارد می‌کنیم.
  2. برای دریافت تصویر از وب‌کم، از تابع cv2.VideoCapture()  استفاده می‌کنیم. به طور معمول عدد 0  در پارامتر اول این تابع به وب‌کم پیش‌فرض اشاره می‌کند. در این کد، از cv2.CAP_DSHOW  نیز برای دسترسی به دوربین در ویندوز استفاده می‌کنیم.
  3. با استفاده از تابع cap.read()، فریم‌های ویدیو را دریافت می‌کنیم. این تابع، تصویر هر فریم و وضعیت دریافت آن را برمی‌گرداند.
  4. از خط ۲۱ تا ۲۳ بررسی می‌کنیم که اگر دریافت فریم موفق نباشد، از حلقه خارج می‌شویم.
  5. با استفاده از تابع cv2.cvtColor() ، فضای رنگی تصویر را از BGR به HSV تبدیل می‌کنیم تا تشخیص رنگ موردنظر آسان‌تر شود.
  6. با تابع cv2.inRange()، ماسکی می‌سازیم که نواحی دارای رنگ قهوه‌ای در محدوده تعیین‌شده را مشخص می‌کند. این محدوده برای تشخیص رنگ قهوه‌ای در نظر گرفته شده است، اما نتیجه به نور محیط و رنگ واقعی جسم نیز وابسته است.
  7. با استفاده از تابع cv2.findContours()، خطوط دور خارجی نواحی مشخص شده در ماسک را استخراج می‌کنیم.
  8. در خطوط ۳۲ تا ۳۶ به کمک حلقه for، خطوط دور را بررسی می‌کنیم و مساحت هر ناحیه را با تابع cv2.contourArea()  به دست می‌آوریم. در این برنامه، فقط اولین ناحیه با مساحت بیشتر از ۱۰۰۰ پیکسل را بررسی می‌کنیم.
  9. با تابع cv2.boundingRect()، مستطیلی پیرامون ناحیه رنگی رسم می‌کنیم. سپس مختصات عمودی آن را با مختصات فریم قبلی مقایسه می‌کنیم. اگر ناحیه به سمت بالا حرکت کرده باشد، با دستور pyautogui.scroll(-3)  صفحه را به پایین اسکرول می‌کنیم. اگر ناحیه به سمت پایین حرکت کرده باشد، با دستور pyautogui.scroll(3)  صفحه را به بالا اسکرول می‌کنیم.
  10. با استفاده از تابع cv2.imshow()، تصویر وب‌کم را نمایش می‌دهیم. برای دریافت و نمایش پیوسته فریم‌ها، از حلقه while  استفاده می‌کنیم. با کمک تابع cv2.waitKey()، فشرده شدن کلید q  را بررسی می‌کنیم تا بتوانیم برنامه را متوقف کنیم. همچنین بسته شدن پنجره تصویر را بررسی می‌کنیم.
  11. در پایان، اتصال به وب‌کم را با تابع cap.release()  آزاد می‌کنیم و با تابع cv2.destroyAllWindows()  پنجره‌های OpenCV را می‌بندیم. این دستورات را در بخش finally  قرار می‌دهیم تا حتی در صورت رخ دادن خطا نیز بتوانیم منابع را آزاد کنیم.
تصویر ساده و مدرن از ابزارهای اتوماسیون بصری مبتنی بر پایتون با ذره‌بین و فلش پیمایش صفحه - پروژه های پایتون برای تمرین

تمرین ۷: واکشی داده از گوگل مپ با پایتون

در این مورد از پروژه های پایتون برای تمرین می‌آموزیم که چگونه اطلاعات را از «گوگل مپ» (Google Maps) جمع‌آوری کنیم. این اطلاعات می‌توانند شامل نام‌ها، امتیازها، توضیحات، نظرات، نشانی‌ها، شماره‌های تماس و موارد دیگر باشند.

در فهرست زیر،‌ ماژول‌های مورد نیاز برای اجرای این پروژه را معرفی کرده‌ایم.

  • «سلنیوم» (Selenium): سلنیوم برای خودکارسازی آزمایش‌ها به کار می‌رود، اما می‌توانیم از آن برای جمع‌آوری داده‌ها نیز استفاده کنیم. با به‌کارگیری سلنیوم می‌توانیم کارهایی مانند کلیک کردن، اسکرول کردن و کار با بخش‌های مختلف صفحات وب را به صورت خودکار انجام دهیم.
  • «درایور وب یا کروم» (Web/Chrome Driver): سلنیوم برای برقراری ارتباط با مرورگر انتخاب شده به درایور وب نیاز دارد. درایورهای وب از پروتکل ارتباطی مشترکی برای تعامل با «سرور وب راه دور» (Remote Web Server) استفاده می‌کنند. به این منظور باید درایور مناسب مرورگر دلخواه خود را پیدا و نصب کنید تا ارتباط میان سلنیوم و مرورگر برقرار شود.
نکته: «درایور کروم» (Chrome Driver) را از نشانی (+) بارگیری کنید. سپس فایل بارگیری شده با نام chromedriver.exe را کپی کنید و در مسیر «C:\chromedriver_win32» در درایو C قرار دهید. باید از همین مسیر استفاده کنید تا با خطا مواجه نشوید.

در فهرست زیر، چند مورد از مهم‌ترین دستورات مورد استفاده در این نوع پروژه‌ها را نوشته‌ایم.

  • برای دریافت نام مکان از دستور زیر استفاده می‌کنیم.
  • برای دریافت امتیاز مکان از دستور زیر استفاده می‌کنیم.
  • برای واکشی توصیف مکان از دستور زیر استفاده می‌کنیم.
  • برای واکشی آدرس مکان از دستور زیر استفاده می‌کنیم.
  • برای دریافت شماره تماس مکان از دستور زیر استفاده می‌کنیم.
  • برای دریافت نظرات مربوط به مکان از دستور زیر استفاده می‌کنیم.

در ادامه بعضی از کدهای بالا را پیاده‌سازی خواهیم کرد.

مثال اول: دریافت نام و آدرس

در این مثال می‌خواهیم نام و آدرس دو مکان جغرافیایی را بدست بیاوریم.

بعد از اجرای کدهای بالا خروجی زیر در ترمینال ظاهر می‌شود.

1 - City Theatre
Address: Tehran Province, Tehran, District 11, Enghelab St, Iran

2 - Saat Square
Address: East Azerbaijan Province, Tabriz, Nowbar, Emam St, 37FW+MF4, Iran

مثال دوم: دریافت نام و شماره تلفن

در این مثال می‌خواهیم نام و شماره تلفن دو مکان جغرافیایی را بدست بیاوریم.

بعد از اجرای کدهای بالا خروجی زیر در ترمینال ظاهر می‌شود.

1 - Children's Medical Center
Contact Number: +98 21 6147 9000

2 - Firouzgar Hospital Genetic Lab
Contact Number: +98 919 116 1744

پروژه های TKinter و Turtle

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

تمرین ۸: ساخت ماشین حساب با TKinter

در این قسمت از پروژه های پایتون برای تمرین می‌خواهیم با استفاده از ماژول Tkinter، ماشین‌حساب گرافیکی ساده‌ای بسازیم که بتواند عملگرهای اصلی ریاضی شامل جمع، تفریق، ضرب و تقسیم را انجام دهد.

برای ساخت اپلیکیشن با Tkinter باید مراحل زیر را دنبال کنید:

  1. ایمپورت کردن ماژول tkinter
  2. ایجاد پنجره اصلی
  3. افزودن تعداد دلخواهی از «ویجت‌ها» (Widgets) به پنجره اصلی
  4. اعمال «رویدادها» (Event Triggers) روی ویجت‌ها
پروژه‌ های پایتون برای تمرین با Tkinter
ساخت ماشین حساب گرافیکی را می‌توان به عنوان یکی از بهترین پروژه‌ های پایتون برای تمرین در نظر گرفت.

ظاهر رابط گرافیکی به شکل زیر خواهد شد:

ساخت ماشین حساب با TKinter

در ادامه کد پیاده‌سازی ماشین حساب را پیاده‌سازی کرده‌ایم.

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

  1. تابع press(key)  ورودی را به عبارت اضافه می‌کند و نمایشگر را به‌روزرسانی می‌کند، تابع equal()  عبارت را ارزیابی کرده و نتیجه یا خطا را نشان می‌دهد و تابع clear()  همه‌چیز را بازنشانی می‌کند.
  2. پنجره اصلی را با عنوان، اندازه، رنگ پس‌زمینه و «متغیر رشته‌ای» (StringVar) متصل به ویجت ورودی برای نمایش ورودی و خروجی راه‌اندازی می‌کنیم.
  3. دکمه‌های عددی (0 تا 9) در یک شبکه مرتب شده‌اند و هر کدام تابع press()  را با شماره خود فراخوانی می‌کنند.
  4. دکمه‌های عملگر + و - و * و / در شبکه قرار گرفته‌اند. هر کدام از دکمه‌ها تابع press()  را با نماد عملگر فراخوانی می‌کنند.
  5. دکمه‌های اضافی شامل علامت مساوی برای راه‌اندازی محاسبات، دکمه پاک کردن صفحه (Clear) برای بازنشانی و نقطه (.) برای افزودن ممیز هستند.
  6. از تابع grid()  برای جای‌گذاری مرتب دکمه‌ها با اندازه و رنگ یکنواخت استفاده کرده و حلقه رویداد اصلی tkinter را اجرا می‌کنیم.

تمرین ۹: طراحی صفحه شطرنج با Turtle

ماژول Turtle یکی از ماژول‌های توکار در پایتون است که امکان رسم اشکال را با استفاده از صفحه به عنوان بوم و لاک‌پشت به عنوان قلم فراهم می‌کند. برای کشیدن هر چیزی روی صفحه، باید لاک‌پشت را حرکت دهیم. توابعی مانند forward()  و backward()  با هدف حرکت دادن لاک‌پشت، ارائه شده‌اند.

برای رسم صفحه شطرنج، مراحل زیر را به ترتیب انجام می‌دهیم.

  1. ماژول turtle  را وارد می‌کنیم و شی‌های بوم و لاک‌پشت را می‌سازیم.
  2. اندازه صفحه رسم و سرعت حرکت لاک‌پشت را تنظیم می‌کنیم.
  3. تابعی برای رسم و رنگ‌آمیزی مربع‌ها تعریف می‌کنیم.
  4. با استفاده از دو حلقه تو در تو، ۸ ردیف و ۸ ستون از مربع‌ها را رسم می‌کنیم. رنگ مربع‌ها را بر اساس موقعیت آن‌ها به صورت یکی‌درمیان سیاه و سفید انتخاب می‌کنیم.
  5. پس از پایان رسم، شی لاک‌پشت را پنهان می‌کنیم.
  6. با فراخوانی turtle.done()  پنجره رسم را باز نگه می‌داریم تا کاربر آن را ببندد.

در ادامه کد پیاده‌سازی را نوشته‌ایم:

بعد از اجرای کدهای بالا خروجی به شکل زیر ساخته خواهد شد.

طراحی صفحه شطرنج با Turtle

پروژه های OpenCV

در این بخش از مطلب پروژه های پایتون برای تمرین، سعی کرده‌ایم دو پروژه کاربردی از OpenCV را پیاده‌سازی کنیم. با تمرین روی این پروژه ها علاوه بر اینکه به حل مسائل واقعی می‌پردازید مهارت و درک خود را از کار با OpenCV نیز ارتقا می‌دهید.

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

تمرین ۱۰: استخراج فریم از ویدئو با کمک OpenCV

در این بخش از پروژه های پایتون برای تمرین، یاد می‌گیریم چگونه فریم‌های ویدیو را به صورت تصویر استخراج کنیم. با استفاده از پایتون و کتابخانه OpenCV می‌توان فریم‌ها را به ترتیب از فایل ویدیویی یا تصاویر دریافتی از دوربین استخراج کرد. سپس می‌توانیم هر فریم را در فایل تصویری جداگانه ذخیره کنیم.

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

  • OpenCV
  • OS

با استفاده از دستور pip می‌توانیم OpenCV را بر روی سیستم خود نصب کنیم.

pip install opencv-python

کدهای مربوط به این پروژه حرفه‌ای و ساده را در پایین نوشته‌ایم.

در فهرست زیر، مهم‌ترین نکات کدهای بالا را توضیح داده‌ایم.

  1. دستور cv2.VideoCapture("path")  فایل ویدیویی را باز می‌کند و شیئی برای ضبط می‌سازد.
  2. دستور vid.read()  فریم بعدی ویدیو را می‌خواند و دو مقدار برمی‌گرداند.
    • مقدار اول، success، مشخص می‌کند که خواندن فریم موفق بوده است یا نه.
    • مقدار دوم، تصویر فریم است که در متغیر image  ذخیره می‌شود.
  3. بررسی if success  تضمین می‌کند که پیش از ذخیره‌سازی، تنها فریم‌های معتبر پردازش شوند.
  4. ترکیب cv2.imwrite(f"frame{count}.jpg", image) و count += 1  هر فریم را به عنوان تصویری با نام افزایشی ذخیره می‌کند.
  5. دستور vid.release()  اتصال به ویدیو را قطع می‌کند و پس از پایان استخراج، منابع سیستم را پس می‌گیرد.

تمرین ۱۱: کشف و استخراج متن از عکس با OpenCV و OCR

فناوری «تشخیص نوری حروف» (Optical Character Recognition | OCR) برای استخراج متن از تصاویر به کار می‌رود. این فناوری در کارهایی مانند دیجیتالی کردن اسناد، پلاک‌خوانی و ورود خودکار داده‌ها استفاده می‌شود. در این قسمت از پروژه های پایتون برای تمرین، بررسی می‌کنیم که چگونه با استفاده از «OpenCV» و «Tesseract OCR»، می‌توانیم حروف و کلمات را از درون تصویر شناسایی و استخراج کنیم.

پیش از شروع لازم است با استفاده از دستورهای زیر، کتابخانه‌های مورد نیاز را نصب کنید:

!pip install opencv-python
!pip install pytesseract
!sudo apt-get install tesseract-ocr
نکته: در کادر بالا دو دستور اول برای محیط‌هایی مانند نوتبوک ژوپیتر و گوگل کولب هستند. دستور سوم هم برای اجرا در ترمینال لینوکس نوشته شده است. اگر از ویندوز استفاده می‌کنید دستور‌های اول را بدون علامت !  در خط فرمان یا پاور شل اجرا بکنید. اما نصب نرم‌افزار Tesseract (دستور سوم) در ویندوز می‌توانید از لینک (+) به عنوان راهنمای نصب و لینک (+) برای دانلود فایل نصب کننده استفاده کنید.
مراحل اصلی کشف و استخراج متن از عکس با OpenCV و OCR
مراحل اصلی کشف و استخراج متن از عکس با OpenCV و OCR

گام اول: وارد کردن بسته‌های مورد نیاز

کتابخانه‌های مورد نیاز پایتون مانند OpenCV یا cv2 و pytesseract  و matplotlib  را وارد کنید.

گام دوم: بارگذاری عکس

اکنون می‌خواهیم با استفاده از تابع cv2.imread()  عکس را در برنامه بارگذاری کنیم. کتابخانه OpenCV عکس‌ها را در فرمت BGR بارگذاری می‌کند. اما matplotlib  برای کار به فرمت RGB نیاز دارد. بنابراین باید با استفاده از تابع cv2.cvtColor()  فرمت عکس را به فرمت درست تبدیل کنیم.

گام سوم: تبدیل عکس به حالت خاکستری

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

بعد از تبدیل کردن عکس به خاکستری تصویر زیر نمایش داده می‌شود:

تصویر خاکستری با ذره‌بین و متن فارسی و انگلیسی

گام چهارم: نمایش عکس اصلی

در این مرحله عکس اصلی را با کمک کتابخانه Matplotlib نمایش می‌دهیم.

بعد از اجرای کدهای بالا خروجی زیر نمایش داده می‌شود.

تصویر رنگی با ذره‌بین و متن فارسی و انگلیسی

گام پنجم: استخراج متن از عکس

در این مرحله برای استخراج متن از عکس از تابع pytesseract.image_to_string()  کمک می‌گیریم.

نکته: با اختصاص رشته eng+fas  به پارامتر lang  در واقع به کامپیوتر می‌گوییم که هر دو متون فارسی و انگلیسی را استخراج کن. اگر بخواهیم فقط یکی از این متون استخراج شوند باید این بخش از کد را به صورت lang="eng" یا lang="fas" بنویسیم.

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

 Extracted Text:

مجله فرادرس، مجله جوانان

5 ‘a Rashidi

گام ششم: رسم خط به دور متن کشف شده در عکس اصلی

اکنون می‌خواهیم به دور تمام کلمات کشف شده یک به یک بچرخیم و کادری به رنگ آبی رسم کنیم. برای انجام این عملیات هم از تابع cv2.reactangle  استفاده می‌کنیم.

گام هفتم:‌ نمایش عکس با کلمات کادر بندی شده

در نهایت هم تصویر اصلی را همراه با کلمات کادر بندی شده در خروجی نمایش می‌‌دهیم.

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

کادر آبی به دور کلمات تشخیص داده شده

یادگیری بهتر پایتون با اجرای پروژه های واقعی

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

در بخش بعد از پروژه های پایتون برای تمرین به سراغ اجرای پروژه کاربردی و حرفه‌ای از جنگو می‌رویم.

پروژه جنگو

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

تمرین ۱۲: وب اپلیکیشن اعلام آب و هوا

در این بخش می‌خواهیم با کمک فریم‌ورک «جنگو» (Django)، اپلیکیشنی برای اعلام آب‌وهوا به صورت آنلاین بسازیم. این وب‌اپلیکیشن به کاربران اجازه می‌دهد هر شهری را جستجو کرده و جزئیات آب‌وهوای فعلی آن شامل دما، رطوبت، فشار و شرایط جوی را مشاهده کنند.

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

گام اول: پیکربندی اپلیکیشن و تعریف مدل

پروژه‌ای به نام «weather» را در نظر بگیرید که اپلیکیشنی به نام «main» دارد. پس از راه‌اندازی پروژه و اپلیکیشن، main را به فهرست INSTALLED_APPS  در فایل «settings.py» اضافه کنید. پس از انجام این کار، وقت ساخت مدلی برای ذخیره داده‌ها در اپلیکیشن است.

کدهای زیر را در فایل «main/models.py» وارد کنید.

مهم‌ترین عملیات مربوط به کدهای بالا را در فهرست پایین توضیح داده‌ایم.

  • این مدل نام شهر، دما، رطوبت، فشار، توضیحات و زمان جستجوها را در متغیر‌هایی با نام‌های با معنی ذخیره می‌کند.
  • وظیفه مدل SearchHistory  این است که به پیگیری جستجوهای اخیر کمک کرده و به صورت اختیاری داده‌ها را برای کاهش تعداد درخواست‌های API ذخیره می‌کند.
پس از ایجاد این مدل، برای ساخت پایگاه داده مربوط به آن باید دو دستور زیر را اجرا کنیم:
Python manage.py makemigrations
Python manage.py migrate

گام دوم ساخت ویو

کدهای زیر را در داخل فایل «views.py» بنویسید.

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

  1. تابع index(request): تابع نمای اصلی است که درخواست‌های GET  و POST  را برای اپلیکیشن آب‌وهوا مدیریت می‌کند.
  2. دستور requests.get(...): این دستور در خطوط ۲۵ تا ۳۴ نوشته شده است. درخواست HTTP را به API وب‌سایت «OpenWeatherMap» می‌فرستد و داده‌های آب‌وهوایی را به صورت زنده در قالب JSON دریافت می‌کند.
  3. دستور response.json(): پاسخ API را برای دسترسی آسان به دیکشنری پایتون تبدیل می‌کند.
  4. دستور SearchHistory.objects.order_by('-searched_at')[:5]: پنج جستجوی اخیر شهرها را از پایگاه داده بازیابی می‌کند.
  5. دستور SearchHistory.objects.create(...): ورودی جدید جستجوی آب‌وهوا (شامل نام شهر، دما و غیره) را در پایگاه داده ذخیره می‌کند.
  6. تابع render(request, "main/index.html", {...}): قالب HTML را رندر می‌کند و داده‌های آب‌وهوا، جستجوهای اخیر و پیام‌های خطا را به عنوان متغیرهای زمینه انتقال می‌دهد.
تصویر یکپارچه‌سازی داده‌های هواشناسی با پایتون و نمادهای خورشید، باران، باد و ابر
نکته: کلید API را از سایت OpenWeatherMap (+) دریافت کنید. عبارت your_api_key_here  را در فایل views.py با کلید API واقعی جایگزین کنید. معمولا این کلید حدود ۲ ساعت طول می‌کشد تا فعال شود.

گام سوم: پیکربندی «نشانی‌های وب» (URLs)

در فایل «weather/urls.py» این کدها را وارد کنید.

گام چهارم: تعریف URL-ها برای تابع main

فایلی با نام «urls.py» در دایرکتوری main بسازید. سپس کدهای زیرا داخل این فایل بنویسید:

گام پنجم: ساخت قالب مناسب

اول از همه باید فایل «index.html» را داخل مسیر «main/templates/main» بسازید. سپس کدهای زیر را داخل این فایل وارد کنید.

مهم‌ترین نکات کدهای بالا را در فهرست پایین بررسی کرده‌ایم.

  1. دستور <form method="post">: نام شهر وارد شده را از طریق درخواست POST به نمای جنگو ارسال می‌کند.
  2. دستور {% csrf_token %}: از فرم در برابر حملات «جعل درخواست بین‌سایتی» (Cross-Site Request Forgery |‌ CSRF) محافظت می‌کند.
  3. دستور {% if error %} ... {% endif %}: در صورت وجود خطا در «زمینه» (Context)، پیام خطا نمایش می‌دهد.
  4. دستور {% if weather %} ... {% endif %}: در صورت در دسترس بودن، جزئیات آب‌وهوای دریافت شده (شهر، دما و غیره) را به صورت پویا نمایش می‌دهد.
  5. دستور <img src="[https://openweathermap.org/img/wn/](https://openweathermap.org/img/wn/){{ weather.icon }}@2x.png">: آیکون آب‌وهوا را بر اساس داده‌های API نمایش می‌دهد.
  6. دستور {% if recent_searches %} ... {% for search in recent_searches %}: پنج شهر جستجو شده آخر را همراه با دما و توصیف آب‌وهوا فهرست می‌کند.
  7. «استایل درون‌خطی» (Inline CSS): طراحی اصلی چیدمان، دکمه‌ها، متن و فاصله گذاری‌ها را مدیریت می‌کند تا رابط کاربری تمیز و خوانا بماند.

گام ششم: اجرای پروژه

با اجرای دستور زیر در خط فرمان، سرور توسعه را راه‌اندازی کنید:

python manage.py runserver

با نوشتن آدرس http://127.0.0.1:8000 در نوارد آدرس مرورگر می‌توانید از سرور توسعه بازدید کنید:

وب‌اپلیکیشن مربوط به نمایش آب و هوا
همین‌طور که مشخص است در تصویر بالا قبل از شیراز،‌آب و هوای تبریز و تهران نیز بررسی شده‌اند.

مطالب مجله فرادرس را در جستجوی گوگل سریع‌تر ببینید

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
GeeksforGeeks
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *