آموزش جامع پایتون؛ از مبانی تا پروژه
از اولین خط کد تا ساخت یک پروژه کامل با Python؛ مسیری که در آن هر مفهوم جای مشخصی دارد و هیچجا رها نمیشوید.
سرفصل جلسات دوره
15 جلسه<div class='lesson-rich-content'> <h2>جلسه 1: قبل از نوشتن اولین خط، محیط را آماده کنیم</h2> <h3>تمرکز جلسه</h3> <p> نصب پایتون، انتخاب ادیتور، اجرای اولین اسکریپت و شناخت تفاوت Shell با فایل. </p> <h3>چرا این مبحث مهم است؟</h3> <p> اگر محیط اجرا و ساختار فایلها را درست درک نکنید، در ادامه هنگام خطاهای اجرایی نمیدانید مشکل از کد است یا از محیط. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> یک پوشه پروژه بسازید، یک فایل ساده بنویسید، از ترمینال اجرا کنید و خروجی را ببینید. </p> <h3>اشتباه رایج</h3> <p> شروع کدنویسی بدون تنظیم محیط و بدون virtual environment باعث میشود وابستگیهای پروژه بههم بریزد. </p> <h3>چالش جلسه</h3> <p> یک پروژه کوچک بسازید، آن را در virtual environment اجرا کنید و تفاوت اجرای مستقیم و اجرا از ترمینال را ثبت کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 2: متغیر، نوع داده و اولین تعامل با کاربر</h2> <h3>تمرکز جلسه</h3> <p> عدد، رشته، Boolean و تبدیل نوع؛ همان چیزهایی که هر برنامه واقعی با آنها سروکار دارد. </p> <h3>چرا این مبحث مهم است؟</h3> <p> انتخاب نوع داده و تبدیل درست آن روی رفتار برنامه و کیفیت اعتبارسنجی اثر مستقیم دارد. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> برنامهای بنویسید که نام، سن و شهر کاربر را بگیرد، اعتبارسنجی کند و یک پیام خوشآمد سفارشی بسازد. </p> <h3>اشتباه رایج</h3> <p> استفاده از رشته برای همه چیز و تبدیلهای ناایمن ورودی باعث میشود خطاهای پنهان در منطق برنامه ایجاد شود. </p> <h3>چالش جلسه</h3> <p> برنامهای بسازید که سه ورودی مختلف بگیرد و هر کدام را با نوع مناسب پردازش و نمایش دهد. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 3: تصمیمگیری در کد؛ وقتی برنامه باید انتخاب کند</h2> <h3>تمرکز جلسه</h3> <p> if، elif، else و ترکیب شرطها برای ساختن منطق واقعی. </p> <h3>چرا این مبحث مهم است؟</h3> <p> بخش بزرگی از منطق کسبوکار از تصمیمها ساخته میشود و کیفیت شرطها روی نگهداری اثر دارد. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> یک سیستم تخفیف بسازید که بر اساس مبلغ خرید و وضعیت مشتری، درصد تخفیف را محاسبه کند. </p> <h3>اشتباه رایج</h3> <p> شرطهای تو در تو و تکرار منطق مشابه در چند جای برنامه باعث میشود تغییر یک قانون، چند نقطه را تحت تأثیر قرار دهد. </p> <h3>چالش جلسه</h3> <p> سیستم تخفیفی با سه قانون مستقل طراحی کنید که هرکدام جداگانه قابل تست باشد. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 4: تکرار بدون خستگی؛ حلقهها در عمل</h2> <h3>تمرکز جلسه</h3> <p> for، while، break و continue؛ انتخاب حلقه مناسب برای هر موقعیت. </p> <h3>چرا این مبحث مهم است؟</h3> <p> تقریباً هر برنامه واقعی با مجموعهای از دادهها کار میکند و پیمایش صحیح آنها یک مهارت پایه است. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> نمرات چند دانشآموز را پردازش کنید و میانگین، بالاترین نمره و تعداد قبولیها را گزارش دهید. </p> <h3>اشتباه رایج</h3> <p> استفاده از حلقههای پیچیده برای کاری که با پیمایش ساده قابل حل است، خوانایی را کاهش میدهد. </p> <h3>چالش جلسه</h3> <p> برنامهای بنویسید که یک منوی متنی داشته باشد و تا خروج کاربر ادامه دهد. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 5: لیست و تاپل؛ وقتی داده ترتیب دارد</h2> <h3>تمرکز جلسه</h3> <p> ساخت، پیمایش، جستوجو و تغییر مجموعههای ترتیبی. </p> <h3>چرا این مبحث مهم است؟</h3> <p> انتخاب ساختار داده ترتیبی مناسب، منطق برنامه را سادهتر و خواناتر میکند. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> فهرست خرید یک خانواده را مدیریت کنید؛ آیتم اضافه کنید، حذف کنید و اقلام تکراری را پیدا کنید. </p> <h3>اشتباه رایج</h3> <p> تغییر تاپلها بهجای استفاده از ساختار مناسب برای دادههایی که باید تغییر کنند. </p> <h3>چالش جلسه</h3> <p> یک فهرست خرید بسازید که از افزودن، حذف و جستوجو پشتیبانی کند و در برابر ورودی تکراری رفتار مشخصی داشته باشد. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 6: دیکشنری؛ وقتی داده با کلید شناخته میشود</h2> <h3>تمرکز جلسه</h3> <p> ساختار کلید-مقدار، پیمایش، جستوجو و دادههای تو در تو. </p> <h3>چرا این مبحث مهم است؟</h3> <p> بسیاری از دادههای واقعی با یک کلید مشخص شناخته میشوند و انتخاب Dictionary میتواند کد را بسیار سادهتر کند. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> دفترچه تلفن ساده بسازید که هر مخاطب چند شماره داشته باشد و بشود جستوجو و ویرایش کرد. </p> <h3>اشتباه رایج</h3> <p> استفاده از لیستهای موازی برای دادههای کلید-مقدار که باعث پیچیدگی و خطا در نگهداری میشود. </p> <h3>چالش جلسه</h3> <p> دفترچه تلفنی بسازید که هر مخاطب چند شماره داشته باشد و جستوجو بر اساس نام انجام شود. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 7: توابع؛ کد را به قطعههای قابل استفاده تقسیم کنیم</h2> <h3>تمرکز جلسه</h3> <p> تعریف تابع، پارامتر، return، scope و شکستن مسئله به بخشهای کوچک. </p> <h3>چرا این مبحث مهم است؟</h3> <p> توابع کوچک و هدفمند باعث میشوند کد تستپذیرتر و قابل استفاده مجدد شود. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> یک ماشینحساب مالی بنویسید که هر عملیاتش یک تابع مستقل باشد و برای ورودی مرزی رفتار مشخص داشته باشد. </p> <h3>اشتباه رایج</h3> <p> توابع بزرگ با چند مسئولیت که در طول زمان به نقاط پرریسک پروژه تبدیل میشوند. </p> <h3>چالش جلسه</h3> <p> یک عملیات مالی چندمرحلهای را به توابع کوچک با مسئولیت مشخص تقسیم کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 8: ماژولها؛ پروژه را از یک فایل بزرگ نجات دهیم</h2> <h3>تمرکز جلسه</h3> <p> import، ساخت فایلهای جداگانه و جداسازی مسئولیتها. </p> <h3>چرا این مبحث مهم است؟</h3> <p> ساختاردهی مناسب پروژه از همان ابتدا هزینه تغییر و نگهداری را کاهش میدهد. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> پروژه جلسات قبل را به سه فایل input، logic و report تقسیم کنید و وابستگیها را ساده نگه دارید. </p> <h3>اشتباه رایج</h3> <p> قرار دادن همه منطق در یک فایل که با رشد پروژه به یک فایل غیرقابل نگهداری تبدیل میشود. </p> <h3>چالش جلسه</h3> <p> پروژه را به ماژولهای مستقل تقسیم کنید و مشخص کنید هر ماژول چه مسئولیتی دارد. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 9: فایل؛ ذخیره و بازیابی داده بین اجراها</h2> <h3>تمرکز جلسه</h3> <p> خواندن، نوشتن، encoding و مسیرها؛ همان چیزهایی که در پروژه واقعی زیاد پیش میآید. </p> <h3>چرا این مبحث مهم است؟</h3> <p> پروژههای واقعی معمولاً باید داده را بین اجراها حفظ کنند و کار با فایل اولین قدم در این مسیر است. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> یک فایل متنی از تراکنشها بسازید، آن را بخوانید، تراکنشهای نامعتبر را جدا کنید و نسخه تمیز را ذخیره کنید. </p> <h3>اشتباه رایج</h3> <p> نادیده گرفتن encoding یا ساخت مسیر با رشتههای ثابت که روی سیستمهای مختلف خطا ایجاد میکند. </p> <h3>چالش جلسه</h3> <p> برنامهای بسازید که داده تراکنشها را از فایل بخواند و نسخه پاکسازیشده را ذخیره کند. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 10: خطا؛ وقتی برنامه غافلگیر میشود</h2> <h3>تمرکز جلسه</h3> <p> Exception handling، انتخاب نوع خطا و جلوگیری از شکست برنامه. </p> <h3>چرا این مبحث مهم است؟</h3> <p> مدیریت خطا بخشی از طراحی نرمافزار است و روی تجربه کاربر و قابلیت پشتیبانی اثر مستقیم دارد. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> فرم ثبت سفارش را طوری بنویسید که ورودی غیرعددی، فایل نبود و داده خالی، هر کدام پیام مشخص خودشان را بدهند. </p> <h3>اشتباه رایج</h3> <p> گرفتن همه خطاها با یک except عمومی که علت واقعی مشکل را پنهان میکند. </p> <h3>چالش جلسه</h3> <p> چند سناریوی خطای متفاوت تعریف کنید و برای هرکدام پیام و رفتار مشخصی طراحی کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 11: شیءگرایی؛ مدلسازی دنیای واقعی در کد</h2> <h3>تمرکز جلسه</h3> <p> Class، object، property، method و مسئولیت هر کلاس. </p> <h3>چرا این مبحث مهم است؟</h3> <p> وقتی داده و رفتار مرتبط با آن در یک مدل قرار بگیرد، کد بسیار خواناتر و قابل نگهداریتر میشود. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> کلاسهای User و Transaction را طراحی کنید و یک گردش مالی ساده بین آنها را پیاده کنید. </p> <h3>اشتباه رایج</h3> <p> ساخت کلاسهایی که فقط چند property عمومی دارند و هیچ مسئولیتی در قبال قواعد دامنه ندارند. </p> <h3>چالش جلسه</h3> <p> مدل تراکنش را طوری طراحی کنید که تغییر وضعیت آن فقط از مسیرهای معتبر انجام شود. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 12: ارثبری یا ترکیب؟ انتخاب درست در طراحی</h2> <h3>تمرکز جلسه</h3> <p> مقایسه inheritance و composition و جلوگیری از سلسلهمراتب بیدلیل عمیق. </p> <h3>چرا این مبحث مهم است؟</h3> <p> انتخاب درست بین ارثبری و ترکیب روی انعطافپذیری و قابلیت نگهداری سیستم اثر مستقیم دارد. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> انواع گزارش را مدل کنید؛ یک گزارش جدید اضافه کنید بدون اینکه منطق گزارشهای قبلی دست بخورد. </p> <h3>اشتباه رایج</h3> <p> استفاده افراطی از ارثبری برای حذف چند خط کد که ساختار برنامه را پیچیدهتر میکند. </p> <h3>چالش جلسه</h3> <p> دو نوع گزارش جدید طراحی کنید و مشخص کنید کدام با ارثبری و کدام با ترکیب بهتر پیاده میشود. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 13: کار با داده جدولی؛ اولین قدم با Pandas</h2> <h3>تمرکز جلسه</h3> <p> خواندن CSV، فیلتر، groupby و خلاصهسازی داده. </p> <h3>چرا این مبحث مهم است؟</h3> <p> کار با داده جدولی در پروژههای واقعی بسیار رایج است و Pandas ابزار پایه آن محسوب میشود. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> یک فایل فروش را بخوانید و فروش هر دسته، هر ماه و پرفروشترین محصول را استخراج کنید. </p> <h3>اشتباه رایج</h3> <p> بارگذاری داده بدون بررسی ساختار و نوع ستونها که باعث خطاهای پنهان در ادامه تحلیل میشود. </p> <h3>چالش جلسه</h3> <p> یک فایل فروش را تحلیل کنید و سه گزارش مدیریتی از آن استخراج کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 14: تست و بازبینی؛ قبل از تحویل، کد را جدی بگیریم</h2> <h3>تمرکز جلسه</h3> <p> نوشتن تست برای توابع کلیدی، نامگذاری درست و بازبینی کد. </p> <h3>چرا این مبحث مهم است؟</h3> <p> تست و بازبینی به ما کمک میکند تغییرات بعدی رفتار قبلی برنامه را خراب نکنند. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> برای چند تابع اصلی پروژه تست بنویسید و یک بازبینی واقعی روی کد خودتان انجام دهید. </p> <h3>اشتباه رایج</h3> <p> نوشتن تست فقط برای مسیرهای موفق و نادیده گرفتن سناریوهای مرزی و ورودیهای غیرمنتظره. </p> <h3>چالش جلسه</h3> <p> برای چند تابع کلیدی حداقل سه تست بنویسید و سناریوهای مرزی را پوشش دهید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>
<div class='lesson-rich-content'> <h2>جلسه 15: پروژه نهایی؛ از صفر تا یک سامانه مالی</h2> <h3>تمرکز جلسه</h3> <p> اتصال همه مفاهیم در یک پروژه واحد و تصمیمگیری فنی. </p> <h3>چرا این مبحث مهم است؟</h3> <p> پروژه نهایی نشان میدهد آیا میتوانید مفاهیم مختلف را به یک سیستم منسجم تبدیل کنید یا فقط هر مبحث را جدا یاد گرفتهاید. </p> <h3>در عمل چه کار میکنیم؟</h3> <p> سامانه مدیریت مالی شخصی را کامل کنید؛ از ساختار پوشهها و ذخیرهسازی تا گزارشگیری و مدیریت خطا، و آن را مستند تحویل دهید. </p> <h3>اشتباه رایج</h3> <p> تمرکز صرف بر اجرای پروژه و بیتوجهی به ساختار، خوانایی و قابلیت توسعه. </p> <h3>چالش جلسه</h3> <p> سامانه را کامل کنید، چند سناریوی واقعی برای آن تعریف کنید و تصمیمهای فنی اصلی را مستند کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده میشود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>