برنامهنویسی با AI · Python از صفر
پایه برنامهنویسی
با AI
لازم نیست برنامهنویس حرفهای باشی که از AI کد بگیری، ولی باید بفهمی کدی که بهت میده چی کار میکنه. اینجا همین پایهها رو با مثالهای روزمره و چیزهایی که خودت باهاشون ور میری یاد میگیری، بدون هیچ پیشنیازی.
از فصل اول شروع کن ←چرا این ساخته را امتحان کنی؟
هجده فصل، از اولین متغیر تا اولین پروژه.
هر فصل با یک تشبیه ساده شروع میشود؛ بعد خودت با یک آزمایش کار میکنی، کد و خلاصه را میبینی و با تمرین و سؤال میسنجی چقدر جا افتاده. پیشرفتت همینجا در مرورگرت ذخیره میشود.
- ۱۸ فصل در ۵ بخشمتغیر، شرط، حلقه و تابع تا JSON، API، دیباگ و کار با AI.
- آزمایش کنار هر فصلتشبیه، آزمایش تعاملی، کد، خلاصه، تمرین و سؤال.
- پروژهٔ پایانییک سیستم مدیریت سفارش را قدمبهقدم میسازی.
میخواهی بیشتر و متفاوت یاد بگیری؟
اول مشخصات و آدرس ایمیلت را همینجا ثبت کن تا دسترسی به این محتوای آموزشی، شبیهسازها و بازیها بهطور کامل برایت باز شود — یک بار برای همهٔ ساختهها.
بدون اسپم؛ فقط خبر ساختهها و دورههای تازه. حساب کاربری داری؟ وارد شو
هر فصل با یه تشبیه ساده شروع میشه. بعدش یه قسمت هست که خودت باهاش کار میکنی، بعد کد و یه خلاصهی کوتاه، و آخرش یه تمرین و یه سؤال که ببینی چقدر جا افتاده.
برنامهنویسی واقعاً چیه؟
هر برنامهای که تا حالا باهاش کار کردی، از ماشینحساب گوشیت بگیر تا ChatGPT، تهش داره سه تا کار میکنه: یه چیزی ازت میگیره (ورودی)، یه سری قانون روش اجرا میکنه (پردازش) و یه چیزی تحویلت میده (خروجی).
آبمیوهگیری رو در نظر بگیر. پرتقال میریزی توش، دستگاه میفشاردش و آب پرتقال تحویل میگیری. کار برنامهنویس اینه که قانونهای اون وسط رو بنویسه، یعنی دقیقاً بگه دستگاه با پرتقال چی کار کنه.
توی کوچیکترین برنامهی پایتون هم همین سه مرحله رو میبینی:
name = input("اسمت چیه؟ ") # ورودی
greeting = "سلام " + name # پردازش
print(greeting) # خروجی
چرا از Python شروع کنیم؟
کد پایتون خیلی شبیه جملههای سادهی انگلیسیه و آدم زود باهاش اخت میشه.
بیشتر ابزارها و کتابخونههای هوش مصنوعی اول برای پایتون ساخته میشن.
هر ابزار AI که بخوای ازش کد بگیری، پایتون رو خیلی خوب بلده.
تمرین فصل ۱
- سه تا اپی که هر روز باهاشون کار میکنی رو بردار و برای هر کدوم بنویس ورودی، پردازش و خروجیش چیه.
- از یه AI بخواه برنامهنویسی رو با یه تشبیه دیگه برات توضیح بده و ببین کدوم تشبیه برات جاافتادهتره.
متغیرها و نوع دادهها
متغیر رو مثل یه جعبه تصور کن که روش برچسب زدی. یه چیزی میذاری توش و هر وقت لازمش داشتی، با اسم همون برچسب صداش میکنی. هر چیزی هم که توی جعبهست یه «نوع» داره: متن، عدد صحیح، عدد اعشاری یا درست/غلط.
رایجترین ارور اول کار: قاطی کردن نوعها
گرفتن ورودی از کاربر
input() هر چی کاربر تایپ کنه رو به شکل متن تحویل میده، حتی اگه طرف عدد تایپ کرده باشه. پس اگه قراره باهاش حسابوکتاب کنی، اول باید با int() تبدیلش کنی.
تمرین فصل ۲
- چهار تا متغیر بساز: اسم (str)، سن (int)، قد به متر (float) و اینکه دانشجو هستی یا نه (bool).
- یه برنامه بنویس که اسم و سن کاربر رو بگیره و این جمله رو چاپ کنه: «سلام [اسم]، تو [سن] سالته».
عملگرها
عملگرها همون علامتهاییان که باهاشون روی دادهها کار میکنیم. سه دستهان: ریاضی که حساب میکنه، مقایسهای که جوابش True یا Falseه، و منطقی که چند تا شرط رو با هم ترکیب میکنه.
x = 5 یعنی عدد ۵ رو بذار توی جعبهی x. اینجا چیزی نمیپرسی، داری مقدار میدی.
x == 5 میپرسه x با ۵ برابره یا نه. جوابش هم Trueه یا False.
and یعنی هر دو شرط، or یعنی کافیه یکیش درست باشه+= و -=count += 1 دقیقاً همون count = count + 1ه. مقدار فعلی رو برمیداره، یکی بهش اضافه میکنه و دوباره میذارتش توی جعبه.
= مقدار میده و == سؤال میپرسه.تمرین فصل ۳
- یه برنامه بنویس که یه عدد بگیره و با
%بگه زوجه یا فرد. عدد زوج باقیموندهی تقسیمش بر ۲ صفره؛ توی ماشینحساب بالا امتحانش کن. - دو تا متغیر بساز، یکی سن و یکی اینکه بلیت داره یا نه. بعد با
andچک کن اجازهی ورود داره یا نه.
شرطها، جایی که برنامه تصمیم میگیره
برنامهنویسی خیلی وقتها یعنی به کامپیوتر بگی «اگه این شد، اون کار رو بکن، وگرنه این یکی رو». مثل وقتی که پشت چراغ راهنمایی هستی و بسته به رنگش تصمیم میگیری. پایتون شرطها رو از بالا به پایین یکییکی چک میکنه و اولین شرطی که درست باشه رو اجرا میکنه.
if temperature > 30:elif temperature > 15:else:یه سؤال: اگه دما ۳۵ باشه، شرط دوم (بیشتر از ۱۵) هم درسته. پس چرا «هوا معتدله» چاپ نمیشه؟ چون پایتون همین که اولین شرط درست رو پیدا کرد، دیگه بقیه رو اصلاً نگاه نمیکنه.
بعد از هر شرط یه دونقطه (:) میذاری و خط بعدی رو یه تب، یا چهار تا فاصله، میبری جلوتر. همین فاصلهست که به پایتون میگه این خط مال کدوم شرطه.
if، بعد elif و آخر elseه. تورفتگی هم توی پایتون سلیقهای نیست، جزو قانونهاست.تمرین فصل ۴
- یه برنامه بنویس که نمره (از ۰ تا ۲۰) بگیره و بگه عالی، خوب، قبول یا مردود.
- یه سیستم تخفیف با
if/elif/elseبساز. مثلاً خرید بالای یه میلیون ۲۰ درصد تخفیف بگیره و بالای ۵۰۰ هزار ۱۰ درصد.
حلقهها، تکرار بدون خستگی
حلقه یعنی «این کار رو تکرار کن». دو جور داره: for وقتی از قبل میدونی چند بار (مثلاً «ده بار طناب بزن») و while وقتی قراره تا یه جایی ادامه بدی (مثلاً «تا وقتی خسته نشدی بدو»).
for و range() range(شروع، پایان، گام). خود عدد پایان حساب نمیشه.fruits = ["سیب", "موز", "پرتقال"]
for fruit in fruits:
print(fruit)
while، قدمبهقدم تا وقتی شرط Trueه، تکرار میکنهfor برای وقتیه که تعداد تکرار معلومه و while برای وقتی که منتظر یه شرط توقفی. اگه شرط while هیچوقت False نشه، میافتی توی حلقهی بینهایت.تمرین فصل ۵
- با
forعددهای ۱ تا ۱۰ رو چاپ کن. (راهنمایی:range(1, 11)) - یه لیست از ۵ تا عدد بساز و با حلقه جمعشون رو حساب کن.
- حدس بزن
range(3, 10, 3)چی چاپ میکنه، بعد بالا امتحانش کن.
تابعها، بستهبندی منطق
تابع مثل یه دستگاهه. یه چیزی بهش میدی (ورودیها که بهشون میگیم پارامتر)، یه کاری روش انجام میده و یه چیزی پس میده (با return). دستگاه رو یه بار میسازی و هر چند بار که بخوای ازش استفاده میکنی.
def calculate_discount(price, percent):
discount = price * (percent / 100)
return price - discount
result = calculate_discount(500000, 10)
print(result) # 450000.0
def یعنی «یه تابع تعریف کن»return نتیجه رو پس میدهتمرین فصل ۶
- یه تابع بنویس که دو تا عدد بگیره و بزرگترش رو برگردونه.
- یه تابع بنویس که یه اسم بگیره و یه جملهی خوشآمدگویی برگردونه.
لیست و دیکشنری
لیست مثل قطاره. واگنها پشت سر همان و هر کدوم یه شماره دارن که بهش میگیم اندیس. شمارهها هم از صفر شروع میشن، نه از یک.
دیکشنری مثل یه کمد کشوییه. روی هر کشو یه برچسب هست (کلید) و توش یه چیزی (مقدار). اینجا با اسم کشو سراغش میری، نه با شماره.
fruits ور برو حواست به شمارههای زیر هر خونه باشهcustomer کلید رو بده، مقدار رو بگیرfor c in customers:
print(c["name"])
pop یا remove چیزی رو برداری، اندیسها دوباره شمارهگذاری میشن.تمرین فصل ۷
- یه لیست از ۴ تا کشور بساز، یکی بهش
appendکن و یکی روremove. - یه دیکشنری برای خودت بساز با
name،ageوcity. - یه لیست از دیکشنریها بساز (مثلاً چند تا مشتری) و با حلقه اسم همه رو چاپ کن.
کتابخونهها و import
لازم نیست چرخ رو از اول اختراع کنی. هزاران ابزار آماده هست که بقیه نوشتن و بهشون میگیم کتابخونه. import یعنی «این جعبهابزار رو بیار سر میزم». بعضیهاشون همراه خود پایتون نصب میشن و بعضیها رو باید اول با pip install نصب کنی.
همیشه دم دسته و import نمیخواد
print،input،len
با خود پایتون نصب شده، فقط importش کن
random،datetime،json،os
اول با pip install نصب، بعد import
requests،python-dotenv،pandas
random و datetime توی عملیعنی کتابخونه نصب نیست. با pip install درست میشه.
یعنی اسم رو اشتباه نوشتی، یا همچین کتابخونهای اصلاً وجود نداره.
import یعنی استفاده از کدی که بقیه نوشتن. بعضیها آمادهان و بعضیها رو باید با pip install نصب کنی.تمرین فصل ۸
- با
random.choiceیه عضو تصادفی از یه لیست انتخاب کن. datetimeرو import کن و تاریخ امروز رو چاپ کن.
کار با JSON
JSON یه جور زبان مشترک برای دادهست. پایتون، جاوااسکریپت، اپ موبایل و سرور هر کدوم زبون خودشون رو دارن، ولی همهشون JSON رو میفهمن. اگه دقیق نگاه کنی، JSON همون دیکشنری پایتونه که به شکل یه متن استاندارد دراومده تا بشه ذخیرهش کرد یا از اینترنت فرستادش.
دیکشنری پایتون type: dict
متن JSON type: str
True رو با T بزرگ مینویسه ولی JSON با t کوچیک (true). پایتون متن رو با ' نشون میده ولی JSON همیشه از " استفاده میکنه.import json
data = {"name": "علی", "age": 30}
json_text = json.dumps(data) # دیکشنری رو تبدیل میکنه به متن JSON
parsed = json.loads(json_text) # متن رو برمیگردونه به دیکشنری
print(parsed["name"]) # علی
dumps تبدیلش میکنه به متن و loads برش میگردونه به دیکشنری. اون s آخرشون هم مخفف stringه، اگه خواستی راحتتر یادت بمونه.تمرین فصل ۹
- از اطلاعات خودت یه دیکشنری بساز و با
json.dumpsتبدیلش کن به متن. - همون متن رو با
json.loadsبرگردون و یکی از مقدارهاش رو چاپ کن.
ساختار فایلهای پروژه
یه پروژهی واقعی شبیه یه ساختمونه. در ورودی داره، انبار داره، گاوصندوق داره، دفترچهی راهنما داره. کد توی چند تا فایل و پوشهی مرتب پخش میشه تا هم خودت و هم AI بدونید هر چیزی کجاست.
main.py نقطهی شروعه، requirements.txt لیست کتابخونههاست، .env رازها رو نگه میداره و README.md پروژه رو توضیح میده.تمرین فصل ۱۰
- یه پوشه برای پروژه بساز و توش
main.pyوREADME.mdبذار. - توی README بنویس پروژه چی کار میکنه و چطوری اجرا میشه.
کار با API
API رو مثل گارسون رستوران در نظر بگیر. تو (یعنی برنامهت) مستقیم نمیری توی آشپزخونهی یه سرویس دیگه. سفارشت رو به گارسون میدی، اون میبره و غذا رو برات میاره. اینجا غذا همون دادهست که معمولاً به شکل JSON برمیگرده.
یعنی «یه چیزی بده». مثل اینکه منو رو بخوای یا سفارش بدی. داری داده میخونی.
یعنی «یه چیزی بساز». مثل ثبت یه رزرو جدید. داری داده میفرستی.
GET یه چیزی میگیره و POST یه چیزی میسازه. قبل از استفاده از جواب هم status_code رو نگاه کن؛ ۲۰۰ یعنی همهچی اوکیه.تمرین فصل ۱۱
- کد
agify.ioرو با اسم خودت اجرا کن. - قبل از اینکه داده رو بخونی، status code رو چاپ کن و مطمئن شو ۲۰۰ه.
متغیرهای محیطی و امنیت (.env)
هیچوقت کلید یا رمز رو مستقیم توی کد ننویس. کدت رو به بقیه نشون میدی، میذاری روی گیتهاب، کپیش میکنی توی چت AI... کلید API مثل کلید خونهته. بذارش توی یه گاوصندوق جدا به اسم .env و به گیت بگو هیچوقت به اون گاوصندوق دست نزنه. این کار رو با .gitignore میکنی.
کامپیوتر خودت
GitHub (همه میبیننش)
.env
OPENAI_API_KEY=sk-abc123xyz456 STORE_NAME=فروشگاه نیما
.gitignore
.env __pycache__/ *.pyc .venv/
.env جدا بمونن و .env هم توی .gitignore باشه. توی کد هم با os.environ.get() میخونیش.تمرین فصل ۱۲
- یه فایل
.envبساز وSTORE_NAMEرو توش بنویس. - توی کد با
load_dotenv()بخونش و یه پیام خوشآمد چاپ کن.
State؛ وضعیت برنامه
State یعنی چیزهایی که برنامه یه لحظهی مشخص یادشه و موقع اجرا عوض میشن. سبد خرید یه فروشگاه اینترنتی مثال خوبیه. فقط حواست باشه این حافظه موقته، مثل نوشتن روی وایتبرد: برنامه که بسته بشه، پاک میشه.
cart = [] # وضعیت سبد خرید
def add_to_cart(item):
cart.append(item)
return cart
add_to_cart("دوره پایتون")
add_to_cart("دوره طراحی")
تمرین فصل ۱۳
- یه سبد خرید بساز، سه تا محصول بهش اضافه کن و سبد رو چاپ کن.
مستندسازی
مستندسازی یعنی توضیح بدی کدت چی کار میکنه. بیشتر از همه هم به درد خودت میخوره، شش ماه بعد. خطهایی که با # شروع میشن کامنتن: پایتون اجراشون نمیکنه و فقط برای آدمها نوشته شدن.
# شروع میشن کامنتن و اجرا نمیشن. کامنت رو مثل یادداشتی ببین که برای خود آیندهت میذاری.تمرین فصل ۱۴
- به یکی از تابعهایی که قبلاً نوشتی یه کامنت توضیحی اضافه کن.
ارورها و دیباگ
ارور دشمنت نیست. پیامیه که کامپیوتر میده تا بگه دقیقاً کجا مشکل داره. مثل دکتری که فقط نمیگه «مریضی»، میگه کجات درد میکنه و چرا. فقط باید یاد بگیری چطوری بخونیش.
سه قدم برای دیباگ
نوع ارور و توضیحش همونجاست.
دنبال کلمهی line بگرد و برو سراغ همون خط.
کد، ارور کامل و چیزی که انتظار داشتی رو بهش بده.
تمرین فصل ۱۵
- عمداً یه ارور بساز و ببین میتونی نوعش رو تشخیص بدی یا نه.
- کل ارور رو به AI بده و ازش بپرس چرا پیش اومده.
درست کد گرفتن از AI
AI رو مثل یه همکار خیلی سریع ولی تازهکار ببین. هر چی دقیقتر بگی چی میخوای و شرایط چیه، کار بهتری تحویلت میده. ولی کارش رو باید خودت چک کنی.
۱. بگو چی میخوای، نه اینکه چطوری انجامش بده
«یه تایمر بساز که هر ساعت دیتابیس رو چک کنه.»
«اگه کاربر تا ۹ صبح اولویتهاش رو ثبت نکرده بود، یه یادآوری بهش نشون بده.»
۲. همیشه زمینه بده
هفت قانونی که همیشه باید یادت باشه (روی هر کدوم بزن)
دو تا چیز که باید خیلی حواست بهشون باشه
AI گاهی اسم کتابخونهای رو میده که اصلاً وجود نداره. بدتر از اون، ممکنه یکی با همون اسم یه کتابخونهی مخرب ساخته باشه. قبل از pip install یه سر به pypi.org بزن و اسمش رو جستجو کن.
قبل از اینکه کدت رو توی چت AI کپی کنی، مطمئن شو کلید یا رمزی توش نیست.
تمرین فصل ۱۶
- یه پرامپت ضعیف بنویس، بعد با اضافه کردن زمینه و توضیح نتیجه قویترش کن.
- یه درخواست کوچیک به AI بده و ازش بخواه قبل از کد، نقشهش رو بگه.
پروژهی آخر: سیستم مدیریت سفارش
حالا وقتشه همهی تیکهها رو کنار هم بذاریم. یه فروشگاه کوچیک میسازیم که محصولها رو از فایل میخونه، سفارش میگیره، موجودی رو کم میکنه و تغییرها رو ذخیره میکنه. چهار مرحله داره:
دیسک: products.json میمونه
حافظه: products موقته (RAM)
abc، تعداد -3 (اینجا یه باگ پیدا میکنی) و اینکه سفارش بدی و بدون ذخیره، برنامه رو دوباره اجرا کنی.تمرین آخر
- یه تابع بنویس که محصول جدید اضافه کنه.
- اگه کاربر عدد منفی وارد کرد، قبولش نکن. همون باگیه که توی شبیهساز دیدی.
- مبلغ کل سفارش رو حساب کن و نشونش بده.
جمعبندی و قدم بعدی
یه نگاه دیگه به پروژهی آخر بنداز. هیچ چیز تازهای توش نیست، فقط همون فصلها کنار هم نشستن. روی هر کدوم از مفهومها بزن تا ببینی کجای کد به کار رفته.
فقط سرعتش رو بالا میبره، اونم اگه درست ازش استفاده کنی.
حالا که این مفهومها رو بلدی، کدی که AI برات مینویسه دیگه یه جعبهی سیاه نیست. میتونی بخونیش، بفهمیش و هر جا لازم بود عوضش کنی.
یه چالش برای آخر کار
یه مشکل کوچیک از زندگی خودت، چیزی که واقعاً به دردت بخوره.
با همون پرامپتها و هفت قانون فصل ۱۶، قدمبهقدم.
«چرا اینطوری نوشتی؟» همین سؤاله که یادت میده، نه کپی کردن.
از یادگیری به اجرا