10 پروژهی کاربردی پایتون از ساده به سخت
مقدمه: 10 پروژه ی جالب پایتونی
زبان برنامهنویسی پایتون نیز یکی از زبانهایی است که به لطف اکوسیستم بزرگ و قدرتمند آن، میتوانید پروژههای پرکاربرد زیادی برای تمرین خود تعریف کنید چون پایتون به راحتی میتواند از پس کارهای زیادی بر بیاید! در این مقاله میخواهیم به بخش کوچکی از اکوسیستم پایتون بپردازیم و پس از انجام پروژههای این مقاله، مطمئن باشید که که اگر در اوایل مسیر هستید، مهارت پایتون شما چند پله از سطح فعلیتان بالاتر خواهد رفت.
دنیای برنامه نویسی البته به زبان برنامهنویسی خلاصه نمیشود و در طرح مسئلهی پروژههای این مقاله، به این دقت کردهایم که مفاهیم مختلفی که از خود پایتون فراتر میروند و مربوط به ریاضیات، وب و پردازش هستند را نیز تمرین کنید و کلی ابزار متفاوت و جدید یاد بگیرید. منتظر چه هستید؟! بیایید شروع کنیم!
قبل از شروع تمرین کردن
با تمرین و تکرار و تلاش میتوانید برنامه نویس بهتری شوید!
تمرینهای کاربردی و واقعی برنامه نویسی به شکل حل مسئله تنها با گرفتن راهنمایی اولیه و بدون کمک، میتوانند مهارت های شما را تثبیت، تقویت و بهبود بخشند. برای اینکار باید واقعا از مغز خود استفاده کنید و ایدههای پروژههای پرکاربرد زیر را گرفته، راهنماییها را خوانده و بدون استفاده از هوش مصنوعی! آنها را انجام دهید.
قبل از شروع هر پروژه محیط مجازی اختصاصی هماهنگ پروژه را ساخته و دایرکتوری مشخصی را به پروژه اختصاص بدهید.
برای این کار میتوانید از قسمت آموزشهای رایگان کارگاه پایتون_سرفصل قبل از شروع_ کمک بگیرید.
پروژهها و مسئلههایی که در ادامه میبینید بر ترتیب از آسان به سخت مرتب شدهاند. البته همگی نسبتا ساده هستند ولی مهارتهای مختلفی را در شما تقویت میکنند. اگر چند پروژهی کاربردی اول برای شما خیلی ساده است میتوانید از هر جایی که میخواهید شروع کنید و ادامه دهید.
پروژه ی اول: بازی حدس عدد
توضیحات:
یک بازی ساده بسازید که برنامه یک عدد تصادفی را انتخاب کند و کاربر باید آنرا حدس بزند. اگر درست حدس زد بازی به اتمام برسد و اگر اشتباه حدس زد پیغام "too high" یا "too low " دریافت کند.
مهارت های کلیدی:
سینتکس سطح مقدماتی پایتون، ورودی گرفتن از کاربر، حلقه ها و شرطها
راهنمایی:
باید با استفاده از یک حلقهی for برای تعداد حدس محدود یا while برای تعداد حدس نامحدود مسئله را حل کنید. (فصلها 1و 2 و3 کارگاه پایتون)
پروژه ی دوم: To-Do List App
توضیحات:
یک برنامه ی ترمینالی بنویسید که با استفاده از چند تابع و CLI ترمینال یک اپلیکیشن To-Do List را برای کاربر نمایش دهد. کاربر باید بتواند برنامهی خود را وارد کند و اطلاعات درون برنامه را پاک یا ویرایش کند. همچنین باید اطلاعات زمانی تغییرات کاربر را نیز ذخیره کنید. همه چیز نیز باید درون یک فایل json در آدرس دلخواه شما ذخیره شود و با هر اجرای برنامه اطلاعات از فایل load شده و view یا create یا delete رخ دهد.
مهارت های کلیدی:
سینتکس سطح متوسط پایتون، مدیریت فایل، کتابخانههای استاندارد، کار با زمان
راهنمایی:
فصل 4 و 6 دورهی پایتون را مرور کنید.
پروژه ی سوم: برنامه ی ماشین حساب
توضیحات:
حالا بیاید برای پروژهی سوم، طراحی ماشین حساب ساده که 4 عمل ضرب و جمع و تفریق و تقسیم را انجام میدهد (به صورت گرافیکی) تمرین کنیم. خطاهای مهم شامل ZeroDivisionError و ValueError هستند. مطمئن شوید که نسبت به آنها پیغام خطای مناسبی را به کاربر نمایش بدهید.
مهارت های کلیدی:
سینتکس متوسط پایتون، کتابخانه های استاندارد، Multithreaded processing ، کار با کتابخانهی Tkinter یا kivy و مدیریت خطاها
راهنمایی:
فصل 4 و 6 و 9 دورهی پایتون را مرور کنید.
میتوانید برای افزایش سطح سینتکس پایتونی خود توابع را درون دیکشنری قرار دهید:
def mul(x,y):
return x * y
operations_dict= {
"mul": mul,
...
}
def select_operation(operation_name, x, y):
return operations_dict[operation_name](x,y)
پروژه ی چهارم: ساخت Web Scraper با BeautifulSoup
توضیحات:
یک برنامه بنویسید که با استفاده از BeautifulSoup و ماژول xml از کتابخانههای استاندارد و کتابخانهی Requests یه سایت را از کاربر دریافت کند و لینک های داخلی مربوط با سایت را پیدا کرده و در یک فایل به نام sitemap.xml قرار دهید. دقت کنید که باید فرمت sitemap را لحاظ کنید:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>{address 1}</loc>
<lastmod>2024-06-09</lastmod>
</url>
<url>
<loc>{address 2}</loc>
<lastmod>2024-06-09</lastmod>
</url>
...
</urlset>
مهارت های کلیدی:
آشنایی با فرآیند اتوماسیون، کار با ماژول های XML، b4s و Requests
پردازش دیتا، آشنایی با مفهوم Parsing
راهنمایی:
برای این تمرین نیاز به درک شی گرایی (فصل 5ام دوره ی پایتون) دارید.
پروژه ی پنجم : ساخت اپلیکیشن هواشناسی
توضیحات:
از یک API آماده مثل OpenWeatherMap استفاده کنید و نسبت به لوکیشنی که از کاربر دریافت میکنید اطلاعات آب و هوا را باز گردانید. ظاهر این برنامه مهم نیست اما تمیز کردن و خوانا کردن خروجی API و بازگرداندن متن خوانا برای کاربر مهم است.
مهارت های کلیدی:
کار با API ها، داده های JSON و کتابخانه ی Requests
راهنمایی:
فصل 4 و 6 و 9 دوره ی پایتون را مرور کنید.
پروژه ی ششم: ساخت پسورد ژنراتور
توضیحات:
یک Password Generator بنویسید که با توجه به ورودی های کاربر پسورد های امن تولید کند. ورودی کاربر شامل موارد زیر است:
- حروف بزرگ
- حروف کوچک
- عدد
- علائم نگارشی
- طول پسورد
مهارت های کلیدی:
ابزر Randomization و string manipulation
راهنمایی:
کاربر میتواند تمام ورودی های مورد نظر خود را مشخص کند مثلا هم حروف بزرگ را بخواهد و هم حروف کوچک ولی مثلا بخواهد در پسورد خود علائم نگارشی یا عدد نبیند. تمام این موارد را لحاظ کنید.
از این روش استفاده نکنید:
استفاده از روش معرفی شده در فصل سوم دوره ی جنگو برای حل این مسئله توصیه نمیشود. خودتان بدون استفاده از ابزار کاملا آماده آن را حل کنید.
پروژه ی هفتم: ساخت بلاگ ساده
توضیحات:
یک بلاگ ساده با استفاده از Flask و بکارگیری Jinja بسازید که کاربران بتوانند:
- تمام مقالات بلاگ را ببینند(view list)
- هر مقاله را بخواند(view)
- هر کاربر بتواند مقاله ی جدید بسازد و منتشر کند(create)
- هر کاربر فقط بتواند مقالات منتشر شده ی خود را اصلاح کند(edit)
- هر کاربر فقط بتواند مقالات منتشر شده ی خود را پاک کند(delete)
مهارت های کلیدی:
توسعه ی وب، routing، کار با Flask و Jinja templates و CRUD
راهنمایی:
میتوانید یک دیتابیس SQLite هم به همراه ابزار کار با آن به برنامه اضافه کنید.
پروژه ی هشتم: ساخت چت بات تخصصی
توضیحات:
یک چت بات ساده با استفاده از کتابخانه های Natural Language Processing (NLP) کلاسیک پایتون مثل NLTK یا spaCy بسازید که به query های ورودی کاربر پاسخ دهد.
مهارت های کلیدی:
یادگیری NLP ، مفاهیم سطح بالای پایتون و توکنایزرها
راهنمایی:
به صفحه ی مثال های NLTK بروید و خودتان آنها را بررسی کنید.
بهتر است داکیومنت های NLTK و spaCy را بخوانید! مطمئن باشید مباحث بسیار جالب و پیچیده و زیبا هستند.
پروژه ی نهم: تحلیل بازارهای مالی
توضیحات:
از یکی از API های رایگان گرفتن دیتای بازار های مالی استفاده کنید (صرافی تبدیل هم API خوبی دارد که مشابه API صرافی Binance است) و دیتای دریافت شده را با مدل ARIMA تحلیل و پیشبینی کنید. پارامترهای ARIMA را دستکاری کنید و ببینید که در چه حالتی بهتر عمل میکند. دیتای مارکت و پیشبینی ARIMA را نیز در یک نمودار رسم کنید.
مهارت های کلیدی:
تحلیل داده، machine learning مقدماتی، کار با statsmodels
راهنمایی:
برای استفاده از ARIMA از آدرس زیر باید آن را وارد برنامه کنید:
from statsmodels.tsa.arima.model import ARIMA
پروژه ی دهم: بازی آنلاین 2 نفره
توضیحات:
با استفاده از ماژول Pygame یک بازی دوز (Tic-Tac-Toe) 2 نفره بسازید. هر چند ثانیه بازی باید به یک آدرس بک اند درخواست بزند (آن را با فریم ورک دلخواه خود بنویسید) و مشخص کند نوبت کدام نفر است. در هر مرحله که هر کسی در نوبت خود بازی کرد باید اطلاعات بازی در سمت backend به روز شوند و هر دو بازی کننده بتوانند وضعیت بازی را با کمی تاخیر به درستی روی سیستم خود مشاهده کنند.
مهارت های کلیدی:
کار با ماژول Pygame، توسعه ی بازی و event handling
راهنمایی:
یک راه ساده برای پیاده سازی مشاهده ی درست و سریع بازی استفاده از long-polling است.
مسئله ی بک اند در دنیای Gaming عموما مسئله ی CRUD ( پروژه 7 ) است. سعی کنید یک بک اند CRUD مناسب برای بازی خود بنویسید!
نتیجه
پروژه های بالا، کارهای نسبتا جالب و متفاوتی هستند که میتوانید انجام دهید تا هم مهارت های پایتون خود را تقویت کنید و هم کلی موضوع جدید را یاد بگیرید. در هر سطحی که هستید تمام پروژه ها(به جز اولی) میتوانند چالش های خوبی برای شما داشته باشند. مسیر یادگیری از مطالعه و تمرین و تکرار میگذرد و هیچ کدام از پروژه های بالا خیلی وقت گیر یا غیر قابل انجام نیستند!
شاید بعضی از این پروژه ها ترسناک به نظر برسند اما تمامی آنها با کمی مطالعه، تفکر، سرچ و ممارست قابل انجام هستند. توصیه میکنیم که از این پروژه ها نترسید و به ترتیب آنها را انجام دهید. یکی از علت ترتیب قرارگیری پروژه ها نیز وضوح و کیفیت داکیومنت هاست. مثلا NLTK داکیومنت بهتری نسبت به Pygame دارد و شاید مسئله سخت تر به نظر برسد اما پیاده سازی و کار با آن راحت تر از پروژه ی دهم خواهد بود!
پس در آخر به یاد داشته باشید:
نترسید و انجام دهید!