دوره 0 تا 100 پایتون مقدماتی
یادگیری پایتون از صفر تا ساخت برنامههای کاربردی،
بهصورت پروژهمحور و همراه با تمرین عملی، برای ورود
جدی به دنیای برنامهنویسی...
روش دریافت:
آخرین بروزرسانی: 1405/03/02
تاریخ انتشار: 1405/03/02
پشتیبانی: دائمی
توضیحات دوره
در این دوره، پایتون را با رویکردی اصولی و پروژهمحور یاد میگیرید. از نصب و آمادهسازی محیط و ذهنیت درست شروع میکنیم، سپس وارد تفکر الگوریتمی میشویم و قدمبهقدم مفاهیم پایه مثل متغیرها، انواع داده، ورودی/خروجی، شرطها، لیستها، دیکشنری، حلقهها، توابع، فایلها، مدیریت خطا، دیباگ و کدنویسی تمیز را یاد میگیریم. در پایان هم یک مینیپروژه واقعی (Task Manager خط فرمان) پیادهسازی میکنیم تا همه چیز در عمل تثبیت شود.
جلسات دوره
چپتر 1 — شروع حرفهای و آمادهسازی محیط
10 جلسه
- معرفی دوره، ساختار سهمرحلهای و خروجی نهایی هر مرحله
- بررسی بازار کار Python و مسیرهای شغلی (Backend، Data، Automation و...)
- تفاوت Python با زبانهای دیگر (جاوا، C#, JavaScript) از نظر فلسفه و کاربرد
- نصب Python (Windows / macOS / Linux) و مدیریت نسخهها
- آشنایی با PATH و اجرای python / python3 در ترمینال
- نصب و تنظیم VS Code برای Python (افزونهها، تنظیم فونت، تم و...)
- آشنایی با ترمینال / Command Line و چرا برنامهنویس باید با آن راحت باشد
- ساخت اولین اسکریپت Python (Hello World) و اجرای آن در ترمینال و IDE
- آشنایی با خطاهای رایج اولیه (SyntaxError, IndentationError) و نحوه رفع سریع
- ذهنیت درست برای یادگیری: تمرین مستمر، پروژهمحور، یادداشتبرداری و مرور
چپتر 2 — تفکر الگوریتمی و Pseudocode
5 جلسه
- الگوریتم چیست؟ ویژگیهای یک الگوریتم خوب (تمامیت، پایانپذیری، وضوح)
- چرا قبل از کدنویسی باید مسئله را به گامهای کوچکتر بشکنیم؟
- نوشتن Pseudocode برای مسائل ساده (جمع اعداد، پیدا کردن حداکثر و...)
- تشخیص ورودی، خروجی، پردازش و حالتهای خاص (edge cases) در هر مسئله
- چگونه الگوریتم را مرحله به مرحله به کد Python تبدیل کنیم
چپتر 3 — متغیرها، انواع داده و عملگرها
16 جلسه
- تعریف متغیر چیست و چرا به آن نیاز داریم؟
- قوانین و بهترینروشهای نامگذاری متغیرها (snake_case در Python)
- انواع عددی: int و float و تفاوت آنها (مثالهای ریاضی عملی)
- مفهوم دقت اعشاری (floating point precision) در محاسبات با float
- رشتهها (string): تعریف، نمایش، escape characters (\n, \t و ...)
- ترکیب رشتهها (concatenation) و تکرار با عملگر *
- boolean و عبارتهای True / False و نقش آنها در کنترل جریان برنامه
- عملگرهای مقایسهای: ==, !=, <, >, <=, >=
- عملگرهای منطقی: and, or, not و ترکیب آنها در شرطها
- عملگرهای ریاضی: +, -, *, /, //, %, ** و کاربرد هرکدام
- عملگرهای انتساب ترکیبی: +=, -=, *= و...
- مفهوم type و استفاده از تابع type() برای بررسی نوع داده
- Type casting: تبدیل بین int, float, str و سناریوهای رایج (ورودی کاربر، خروجی)
- ورودیهای مشکلزا در تبدیل (مثلاً تبدیل string نامعتبر به int) و خطاهای مربوط
- متغیرهای موقت و خوانایی کد در فرمولها (استفاده از نامهای معنیدار)
- تمرین: ساخت چند برنامه محاسباتی (ماشین حساب ساده، محاسبه BMI، تبدیل دما)
چپتر 4 — ورودی/خروجی، چاپ حرفهای و قالببندی متن
9 جلسه
- تابع input برای دریافت داده از کاربر و نکات مربوط به نوع داده (همهچیز اول str است)
- ترکیب input با تبدیل نوع (int(), float()) و مدیریت خطاهای احتمالی
- تابع print: چند آرگومان، sep، end و نقش آنها در ساخت خروجی خوانا
- آشنایی با f-string و مزیت آن نسبت به concatenation معمولی
- قالببندی اعداد (تعداد رقم اعشار، جداکننده هزارگان) با f-string
- قالببندی رشتهها (تراز کردن متن، عرض ثابت) برای ساخت جدول متنی ساده
- نمایش پیامهای خطا / موفقیت با رنگ و نماد (در حد متن ساده در کنسول)
- ساخت چند برنامه تعاملی ساده (فرم ثبتنام متنی، محاسبه حقوق خالص، جمعکردن اقلام خرید)
- بهترینروشها در نوشتن پیامهای کاربرپسند (واضح، کوتاه، بدون ترساندن کاربر)
چپتر 5 — شرطها و ساختار تصمیم
10 جلسه
- ساختار پایه if و else با مثالهای ساده
- elif برای ساخت زنجیره تصمیم و مقایسه چند حالت
- استفاده از عملگرهای منطقی (and / or / not) در شرطهای پیچیدهتر
- گروهبندی شرطها با پرانتز بهمنظور خوانایی و جلوگیری از خطا
- الگوهای رایج تصمیمگیری: دستهبندی (مثلاً نمره→A/B/C)، map کردن مقدار به خروجی
- nested if (شرط تو در تو) و مشکل پیچیدگی/خوانایی
- چگونه nested ifهای بد را به ساختارهای بهتر (elif یا دادهساختار مناسب) تبدیل کنیم
- تمرین: طراحی سیستم امتیازدهی (Ranking) و تعیین سطح کاربر
- تمرین: منوی ساده با چند گزینه (محاسبهگرها، تبدیل واحدها، اطلاعات کاربر)
- نکات مربوط به order تصمیم (اول موارد خاص، بعد موارد عمومی)
چپتر 6 — لیستها (List) و کار با مجموعهای از دادهها
14 جلسه
- تعریف list و کاربرد آن برای نگهداری مجموعهای از آیتمها
- ایجاد لیست، دسترسی با index مثبت و منفی
- تغییر مقدار عنصر، اضافهکردن عنصر جدید به انتها با append
- insert، remove، pop و تفاوتهای آنها
- لیست خالی و پرکردن تدریجی آن در حلقهها
- عضویت در لیست: استفاده از in و not in
- len برای گرفتن تعداد عناصر و حلقه روی لیست
- slicing: لیست[شروع:پایان:گام] و کاربرد آن برای زیرلیستها
- کپی سطحی لیست و فرق آن با ارجاع (list_a = list_b vs list_a = list_b.copy())
- متدهای مهم: sort, sorted, reverse, index, count, clear, extend
- min, max, sum روی لیستهای عددی
- لیست تو در تو (nested list) مقدماتی (مثلاً لیست دانشآموز و نمرات او)
- لیستهای ترکیبی (اعداد + رشتهها + دیکشنریها) و کاربرد در ساخت دادهساختارهای ساده
- تمرین: مدیریت لیست دانشجو / محصول (افزودن، حذف، چاپ لیست، جستوجوی یک مورد)
چپتر 7 — دیکشنری و Set
13 جلسه
- مفهوم dictionary: جفتهای key/value و کاربرد آن در دنیای واقعی (کاربر، پروفایل، تنظیمات)
- ساخت دیکشنری، دسترسی به مقدار براساس کلید
- افزودن، ویرایش و حذف کلید/مقدار
- متدهای مهم dict: keys, values, items, get, update, pop
- پیمایش روی دیکشنری با for (روی key و روی items)
- استفاده از dict برای نگهداری تنظیمات برنامه یا پروفایل کاربر
- ترکیب dict + list: لیست دیکشنریها برای نگهداری مجموعهای از رکوردها (چند کاربر، چند محصول)
- مفهوم set و ویژگی اصلی آن: بدون تکرار بودن اعضا
- ساخت set از لیست و حذف موارد تکراری
- عملیات روی set: union, intersection, difference, issubset, issuperset
- کاربردهای عملی set (فیلتر کردن دادههای تکراری، مقایسه دو گروه)
- تمرین: دفترچه تلفن ساده با dict (نام → شماره، ایمیل، تگها)
- تمرین: لیست کاربران فعال/غیرفعال و کار با set برای تشخیص اشتراک و اختلاف
چپتر 8 — حلقهها (Loops) و Iteration
12 جلسه
- حلقه for روی لیست، رشته، range و دیکشنری
- range: ساخت اعداد پشتسرهم، بازههای خاص، گام منفی
- حلقه while و سناریوهایی که while مناسبتر از for است
- break برای خروج زودهنگام از حلقه و continue برای رد کردن یک iteration
- حلقه تو در تو (nested loops) مقدماتی (جدول ضرب، ترکیبها)
- الگوی شمارش (counting) و جمعکردن (summation) داخل حلقه
- الگوی فیلتر کردن (filter) با شرط داخل حلقه
- الگوی جستوجو (search) در لیست یا رشته با flag
- for...else و while...else (کاربرد و مثال)
- اشتباهات رایج در حلقهها (حلقه بینهایت، فراموشکردن بهروزرسانی متغیر در while)
- تمرین: شمارش و فیلتر دادهها (حذف نمرات زیر یک حد، پیدا کردن میانگین)
- تمرین: ساخت چند mini-game متنی ساده (حدس عدد، quiz چندسؤالی)
چپتر 9 — توابع (Functions) و ماژولار کردن کد
14 جلسه
- چرا به تابع نیاز داریم؟ مزایای ماژولار کردن کد (خوانایی، تست، استفاده مجدد)
- تعریف تابع با def و فراخوانی آن
- پارامترها و آرگومانها: positional vs keyword arguments در سطح مقدماتی
- مقدار بازگشتی (return) و تفاوت تابعی که مقدار برمیگرداند با تابع بدون خروجی
- تابع بدون پارامتر، تابع با چند پارامتر و ترتیب پارامترها
- پارامترهای پیشفرض (default arguments) و توجه به ترتیب آنها
- مفهوم scope (محلی و سراسری): متغیرهای داخلی تابع و متغیرهای global
- استفاده محدود از global و دلیل پرهیز از وابستگی شدید به آن
- آشنایی مقدماتی با *args و **kwargs (بدون ورود به پیچیدگی زیاد)
- تقسیم یک مسئله بزرگ به چند تابع کوچک (طراحی لایهبهلایه)
- تمرین: بازنویسی چند برنامه قبلی با توابع (کد تمیزتر، تستپذیری بهتر)
- تعریف کتابخانه ها روش ایجاد , نصب و استفاده
- ساخت ماژول ساده (فایل .py جداگانه) و import آن در فایل اصلی
- آشنایی مقدماتی با docstring و نوشتن توضیح برای توابع
چپتر 10 — کار با فایلها (File I/O) و ذخیرهسازی اطلاعات
13 جلسه
- چرا ذخیرهسازی روی فایل مهم است؟ تفاوت داده در حافظه و روی دیسک
- تعریف path نسبی و absolute به صورت مقدماتی
- تابع open و حالتهای مختلف باز کردن فایل: 'r', 'w', 'a', 'x', 'b'
- خواندن محتوا: read, readline, readlines و سناریوهای مناسب هرکدام
- نوشتن در فایل با write و writelines
- استفاده ایمن از with برای باز و بسته شدن خودکار فایل
- ذخیره و خواندن چند رکورد به صورت line-based (هر خط یک رکورد)
- پردازش خط به خط (strip، split) و تبدیل به ساختارهای مناسب (لیست، دیکشنری)
- مدیریت خطای فایلهای موجود/ناموجود با try/except (FileNotFoundError و...)
- آشنایی مقدماتی با JSON: ساختار key/value تو در تو، تفاوت با dict Python
- ذخیره و خواندن دادهها با json.dump و json.load (ذخیره لیست کارها، کاربران و...)
- تمرین: لاگگیری ساده در فایل متنی (ثبت عملیات کاربر، زمان و نوع عملیات)
- تمرین: ذخیره و بارگذاری یک لیست از دیکشنریها (مثل لیست taskها یا محصولات)
چپتر 11 — مدیریت خطا (Error Handling) و کدنویسی مقاوم
9 جلسه
- فرق خطای نحوی (SyntaxError) و خطای زمان اجرا (RuntimeError)
- ساختار try / except و مفهوم بلوک حساس
- چند except برای خطاهای متفاوت (ValueError, ZeroDivisionError, FileNotFoundError و...)
- استفاده از else و finally و سناریوی کاربردی هرکدام
- استراتژی عمومی: ورودیهای کاربر، ارتباط با فایل، تبدیل نوع و نقاط حساس دیگر
- نمایش پیامهای خطا به کاربر به شکل محترمانه و قابلفهم (نه متن خام استثنا)
- log کردن خطاها در فایل برای Debug بعدی (ساده)
- بالا بردن خطا (raise) مقدماتی برای سناریوهای خاص (مثلاً ورودی نامعتبر)
- تمرین: مقاومسازی برنامههای قبلی در برابر ورودی اشتباه کاربر و خطاهای فایل
چپتر 12 — Debugging، خواندن کد و نوشتن کد تمیز
10 جلسه
- ذهنیت Debugging: بازتولید مسئله، محدود کردن محدوده جستوجو، بررسی فرضیات
- استفاده از print برای ردیابی مقدار متغیرها و جریان اجرا
- آشنایی با Debugger در VS Code / PyCharm (breakpoint، step over، step into، watch)
- خواندن Traceback و تحلیل پیام خطا برای پیدا کردن محل باگ
- فهمیدن کد دیگران: از کجا شروع کنیم و چگونه ساختار کلی کد را بفهمیم
- اصول ساده Clean Code: نامگذاری خوب، توابع کوتاه، حذف کد تکراری
- چینش کد در فایل: ترتیب importها، ثابتها، تابعها و بخش main
- آشنایی با if __name__ == '__main__': برای نقطه ورود برنامه
- مقدمه تستنویسی: نوشتن چند تست دستی ساده، شبیهسازی ورودی/خروجی
- تمرین: خواندن و Refactor کردن یک کد شلوغ و تبدیل آن به نسخه تمیزتر
چپتر 13 — مفاهیم اولیه شیگرایی (OOP) در پایتون
11 جلسه
- مفهوم object در دنیای واقعی و نگاشت آن به کد (کاربر، سفارش، کتاب، محصول)
- تعریف class و ساختن object (instance) از روی آن
- متد سازنده __init__ و مقداردهی اولیه ویژگیها (attributes)
- self چیست و چرا باید اولین پارامتر متدهای نمونه باشد؟
- تعریف متدها (methods) و تفاوت آنها با توابع معمولی
- نمایش شیء با __str__ و __repr__ مقدماتی برای خروجی خواناتر
- encapsulation مقدماتی: ایده پنهانکردن جزئیات و اعمال محدودیت روی دسترسی مستقیم
- قراردادهای Python برای خصوصیسازی: _attribute و __attribute (در حد آشنایی)
- مقدمه inheritance: ساخت کلاس فرزند از کلاس والد با مثال ساده (مثلاً User و AdminUser)
- استفاده از OOP در ساخت ساختارهای قابلاستفاده مجدد (مثال: کلاس Task برای مینیپروژه)
- تمرین: مدلسازی چند موجودیت واقعی (دانشجو، درس، حساب بانکی) با کلاس و متدهای ساده
چپتر 14 — مینیپروژه نهایی: سیستم مدیریت کارها (CLI)
11 جلسه
- تعریف دقیق نیازمندیهای سیستم مدیریت کارها (Task Manager)
- طراحی ساختار داده: چه اطلاعاتی برای هر task لازم است؟ (عنوان، توضیح، وضعیت، تاریخ، اولویت)
- طراحی مدل داده با کلاس Task (استفاده از OOP مقدماتی)
- طراحی منوی CLI تعاملی: نمایش گزینهها، دریافت انتخاب، اعتبارسنجی انتخاب
- پیادهسازی عملیات CRUD: ایجاد، مشاهده لیست، مشاهده جزئیات، ویرایش، حذف
- ذخیرهسازی taskها در فایل (متنی یا JSON) و بارگذاری خودکار هنگام شروع برنامه
- مدیریت خطاها: ورودی نامعتبر، فایل خراب، وضعیتهای غیرمنتظره
- گزارشگیری ساده: فیلتر بر اساس وضعیت (انجامشده/انجامنشده)، اولویت، تاریخ
- نمایش خروجی مرتب و خوانا (جدول متنی ساده با تراز کردن ستونها)
- Refactor نهایی: جدا کردن منطق داده (مدل Task) از لایه UI (منوی CLI)
- جمعبندی دوره: مرور مفاهیم کلیدی و پیشنهاد مسیر ادامه (مرحله ۲ و ۳)
سوالات متداول
این دوره برای چه کسانی مناسب است؟
برای افرادی که میخواهند پایتون را از صفر، اصولی و پروژهمحور یاد بگیرند؛ بدون نیاز به پیشنیاز برنامهنویسی.
در پایان دوره به چه سطحی میرسم؟
به سطحی میرسید که بتوانید اسکریپتهای کاربردی بنویسید، ورودی/خروجی و کنترل جریان را مدیریت کنید، با فایلها کار کنید و یک پروژه CLI کامل را از صفر بسازید.
پروژه نهایی دوره چیست؟
یک سیستم مدیریت کارها (Task Manager) در محیط خط فرمان (CLI) با CRUD، ذخیرهسازی فایل (JSON)، گزارشگیری ساده و ساختار OOP مقدماتی.
آیا این دوره برای ورود به Backend/Data/Automation کافی است؟
این دوره فاندیشن و مهارت عملی لازم را میسازد؛ بعد از آن باید وارد مسیر تخصصی (مثلاً Django/FastAPI برای Backend، Pandas برای Data، یا اسکریپتنویسی و اتوماسیون) شوید.