قراره چی یاد بگیریم؟ اینکه کد پایتون را بخوانی و بفهمی، تا وقتی هوش مصنوعی برایت کد مینویسد، بدانی دارد چهکار میکند و بتوانی کارَت را جلو ببری.
برای اینکه کد پایتون اجرا شود، کامپیوترت باید «زبان پایتون» را بلد باشد. این یعنی باید یک برنامهٔ رایگان به اسم Python را نصب کنیم. مثل این است که برای خواندن یک کتاب فرانسوی، اول باید یک مترجم فرانسوی استخدام کنی!
python.org و کلید Enter را بزن.IDLE — باید برنامهای با آیکون پایتون در نتایج ببینی. اگر دیدی، عالی است! اگر ندیدی، برو به بخش رفع اشکال، مشکل شمارهٔ ۱.پایتون یک زبان برنامهنویسی۲ است؛ یعنی زبانی که با آن به کامپیوتر دستور میدهیم. کامپیوتر مثل یک آشپزِ خیلی سریع ولی خیلی حرفگوشکن است: دقیقاً همان کاری را میکند که نوشتهای — نه یک ذره بیشتر، نه یک ذره کمتر، و اگر جملهات غلط املایی داشته باشد، قهر میکند و خطا میدهد!
پایتون محبوبترین زبان دنیا برای شروع است، چون کدهایش شبیه جملهٔ انگلیسیِ ساده است و هوش مصنوعیها هم در نوشتنِ آن فوقالعادهاند. برای همین بهترین زبان برای وایب کدینگ است.
در وایب کدینگ، چرخهٔ کارِ تو همیشه این ۴ قدم است. این شکل را خوب به خاطر بسپار — کل این آموزش برای این است که بتوانی این چرخه را بچرخانی:
وقتش است اولین دستور را به کامپیوتر بدهی. از برنامهٔ IDLE استفاده میکنیم که همراه پایتون نصب شد.
IDLE>>> میبینی. این پنجره «پوسته»۳ نام دارد.>>> این را دقیقاً همینطوری تایپ کن (همهٔ حروف کوچک، با پرانتز و گیومه):print("Salam Donya!")
تبریک! 🎉 تو الان به کامپیوتر دستور دادی و او اطاعت کرد. بیا کد را کالبدشکافی کنیم:
| تکه | یعنی چه؟ |
|---|---|
print | اسم یک دستور آماده است، یعنی «چاپ کن / نشان بده». (ربطی به پرینترِ کاغذی ندارد؛ یعنی روی صفحه نمایش بده.) |
( ) | پرانتزها مثل دهانِ دستورند: هر چه میخواهی به دستور بدهی، داخلشان میگذاری. |
"Salam Donya!" | گیومهها یعنی «این یک متن است، همینطوری نمایشش بده و سعی نکن معنیاش کنی». |
print درست است ولی Print یا PRINT خطا میدهد. همچنین گیومه و پرانتزِ باز باید حتماً بسته شوند — مثل درِ یخچال!print(2 + 3) — باید عدد 5 را ببینی. دقت کن اینبار گیومه نگذاشتیم، چون میخواستیم پایتون حساب کند، نه اینکه متنِ «2 + 3» را نشان بدهد. اگر جواب نگرفتی، برو به بخش رفع اشکال، مشکل شمارهٔ ۲.تصور کن یک قفسه پر از جعبه داری و روی هر جعبه یک برچسبِ اسم چسباندهای: «اسباببازی»، «مداد»، «پولتوجیبی». هر وقت چیزی لازم داشتی، با اسمش صدایش میزنی. در برنامهنویسی به این جعبهها میگویند متغیر۴ — و این مهمترین چیزی است که در هر کدی میبینی.
در پوستهٔ IDLE این سه خط را یکییکی تایپ کن (بعد از هر خط Enter بزن):
name = "Sara" age = 12 print(name)
| تکه | یعنی چه؟ |
|---|---|
name = "Sara" | یک جعبه به اسم name بساز و متنِ Sara را داخلش بگذار. |
= | ⚠️ در پایتون علامت مساوی یعنی «بگذار داخلِ»، نه «برابر است با»! جهتش همیشه از راست به چپ است: چیزِ سمت راست میرود داخل جعبهٔ سمت چپ. |
print(name) | محتوای جعبهٔ name را نشان بده. چون گیومه ندارد، پایتون میفهمد «name» اسم یک جعبه است، نه یک متن. |
= وسطش دارد، دارد یک جعبه میسازد یا محتوایش را عوض میکند. اسم جعبهها معمولاً معنیدار است: total_price یعنی «قیمت کل»، user_name یعنی «نام کاربر». همین اسمخوانی، نصفِ فهمیدنِ کد است!age = 13، محتوای قبلی دور ریخته میشود و ۱۳ جایش مینشیند.print(age + 1) — باید 13 را ببینی. یعنی پایتون رفت داخل جعبهٔ age، عدد ۱۲ را برداشت و یکی به آن اضافه کرد.همانطور که در آشپزخانه، مایعات را در بطری میریزیم و برنج را در کیسه، در پایتون هم هر «جنس» از اطلاعات، نوعِ خودش را دارد. ۴ نوعِ اصلی که در ۹۰٪ کدها میبینی اینها هستند:
| نوع | اسم انگلیسی در کد | مثال | یعنی چه؟ |
|---|---|---|---|
| عدد صحیح | int | 42 | عدد بدون اعشار. برای شمردن. |
| عدد اعشاری | float | 3.14 | عدد با ممیز. برای اندازهگیری. (بهجای ممیزِ فارسی از نقطه استفاده میشود.) |
| متن / رشته | str | "salam" | هر چیزی داخل گیومه. حتی "42" با گیومه یک متن است، نه عدد! |
| بولی (بله/خیر) | bool | True / False | فقط دو حالت دارد: درست یا غلط. مثل کلید برق: روشن یا خاموش. |
یک ترفند فوقالعاده کاربردی: میتوانی متن و متغیر را قاطی کنی. به این میگویند اِف-اِسترینگ۵ و هوش مصنوعیها عاشقش هستند — تقریباً در هر کدی میبینیاش:
name = "Sara"
age = 12
print(f"Salam {name}! To {age} sal dari.")
f بگذاری، هر چیزی که داخل متن بین آکولاد { } بنویسی، پایتون آن را «جای خالی» حساب میکند و محتوای متغیر را جایش میگذارد. مثل کارت دعوتی که جای اسم مهمان خالی گذاشتهاند و برای هر نفر اسمش را مینویسند."5" + "5" میشود "55" (دو متن به هم چسبیدند!) ولی 5 + 5 میشود 10. یکی از خطاهای رایجی که در وایب کدینگ میبینی همین قاطیشدن متن و عدد است.print(f"2 + 2 = {2 + 2}") — باید ببینی: 2 + 2 = 4. یعنی داخل آکولاد حتی میشود حسابوکتاب هم کرد!گاهی یک جعبه برای یک چیز کافی نیست؛ میخواهی یک فهرست خرید داشته باشی. در پایتون به آن لیست میگویند و با کروشه [ ] ساخته میشود:
kharid = ["nan", "shir", "panir"] print(kharid[0]) print(len(kharid))
| تکه | یعنی چه؟ |
|---|---|
["nan", "shir", "panir"] | یک لیست با ۳ عضو. عضوها با ویرگول انگلیسی جدا میشوند. |
kharid[0] | عضو شمارهٔ ۰ از لیست، یعنی اولین عضو! ⚠️ پایتون از صفر میشمارد، نه از یک. عضو دوم میشود kharid[1]. |
len(kharid) | «طول» لیست، یعنی تعداد عضوهایش. len مخفف length (طول) است. |
و گاهی میخواهی هر چیزی یک برچسب داشته باشد، مثل دفترچهتلفن: اسمِ آدم ← شمارهاش. به این میگویند دیکشنری و با آکولاد { } ساخته میشود:
daneshamooz = {"name": "Sara", "nomre": 19}
print(daneshamooz["name"])
در دیکشنری، هر خانه دو بخش دارد: کلید (سمت چپِ دونقطه، مثل "name") و مقدار (سمت راست، مثل "Sara"). با کلید، مقدار را پیدا میکنی — درست مثل اینکه در دفترچهتلفن با اسمِ آدم، شمارهاش را پیدا میکنی.
[ ] دیدی بگو «آها، فهرست!» و هر وقت { } با دونقطه دیدی بگو «آها، دفترچهتلفن!». اطلاعاتی که از اینترنت یا فایلها میآید (مثل قیمتها، کاربرها، تنظیمات) تقریباً همیشه به شکل همین دوتاست.print(kharid[2]) — باید panir را ببینی (عضو سوم، چون شمارش از صفر است!). اگر خطای قرمز دیدی، برو رفع اشکال، مشکل شمارهٔ ۳.برنامهها باید بتوانند تصمیم بگیرند، مثل خودِ ما: «اگر باران میبارد، چتر بردار؛ وگرنه عینک آفتابی بزن.» در پایتون این کار با if (اگر) و else (وگرنه) انجام میشود:
nomre = 15 if nomre >= 10: print("Ghabool shodi!") else: print("Dobare talash kon.")
if همیشه با دونقطه : تمام میشود. دونقطه یعنی «حالا میگویم در این صورت چهکار کن...».علامتهای مقایسه که در شرطها میبینی:
| علامت | یعنی | مثال |
|---|---|---|
== | آیا برابر است؟ (دقت کن: دو تا مساوی! یک مساوی یعنی «بگذار داخل جعبه») | age == 12 |
!= | آیا نابرابر است؟ | name != "Ali" |
> و < | بزرگتر / کوچکتر | nomre > 10 |
>= و <= | بزرگتر یا مساوی / کوچکتر یا مساوی | nomre >= 10 |
and / or | و / یا — برای ترکیب دو شرط | age > 8 and age < 13 |
elif | «وگرنه اگر» — شرطِ وسطی، بین if و else | — |
nomre = 8 و بعد همان بلوکِ if بالا را دوباره بنویس (در پوسته، بعد از خطِ تورفته یک Enter اضافه بزن تا اجرا شود). اینبار باید Dobare talash kon. را ببینی.فرض کن معلم گفته «برای تکتکِ بچههای کلاس یک کارت تبریک بنویس». تو که ۳۰ بار جملهٔ جدا نمینویسی؛ یک الگو داری و برای هر نفر تکرارش میکنی. در پایتون به این میگویند حلقه و با for ساخته میشود:
kharid = ["nan", "shir", "panir"] for chiz in kharid: print(f"Yadet nare: {chiz}")
ترجمهٔ خطِ for chiz in kharid: به فارسی میشود: «برای هر چیز در لیستِ خرید، کارهای تورفتهٔ زیر را انجام بده.» متغیرِ chiz در هر دور، یکی از عضوهای لیست میشود: دور اول nan، دور دوم shir و همینطور تا آخر.
اگر لیست نداری و فقط میخواهی چیزی مثلاً ۵ بار تکرار شود، از range استفاده میشود:
for i in range(5): print(f"Dor {i}")
range(5) اعداد ۰ تا ۴ را میدهد (باز هم شمارش از صفر، و خودِ ۵ حساب نمیشود!). در کدهای هوش مصنوعی هر جا for دیدی، در ذهنت بگو: «این تکه، برای همهٔ عضوها تکرار میشود.» یک نوع حلقهٔ دیگر هم هست به اسم while که یعنی «تا وقتی که شرط برقرار است، تکرار کن» — مثل «تا وقتی ظرفها تمام نشده، بشور!».for i in range(3): و در خط تورفتهٔ بعد print(i). باید ۰ و ۱ و ۲ را زیر هم ببینی.تابع۷ مثل یک دستورپختِ اسمدار است: یک بار مینویسی «چطور کیک درست کنیم»، بعد هر وقت خواستی فقط میگویی «کیک درست کن!» و لازم نیست دستورپخت را دوباره بنویسی. کدهای هوش مصنوعی پر از تابع هستند، پس این مرحله خیلی مهم است:
def salam_kon(name):
print(f"Salam {name} jan!")
salam_kon("Sara")
salam_kon("Ali")
| تکه | یعنی چه؟ |
|---|---|
def | مخفف define یعنی «تعریف کن». دارد یک دستورپخت جدید میسازد — هنوز اجرایش نمیکند! |
salam_kon | اسمی که خودمان برای دستورپخت انتخاب کردیم. |
(name) | «موادِ لازم» دستورپخت. این تابع یک ماده لازم دارد: یک اسم. به آن «ورودی» یا «پارامتر» میگویند. |
| خطهای تورفته | بدنهٔ دستورپخت — کارهایی که موقع اجرا انجام میشود. |
salam_kon("Sara") | «صدازدنِ» تابع، یعنی: حالا دستورپخت را با مادهٔ «سارا» اجرا کن! تا صدایش نزنی، هیچ اتفاقی نمیافتد. |
تابعها میتوانند بهجای چاپکردن، یک نتیجه پس بدهند. این کار با کلمهٔ return (برگردان) انجام میشود:
def jam_kon(a, b): return a + b natije = jam_kon(3, 4) print(natije)
print فقط چیزی را نشانت میدهد (مثل آشپزی که غذا را از پشت شیشه نشانت بدهد). return نتیجه را تحویلت میدهد تا در جعبهای بگذاری و بعداً استفادهاش کنی (مثل بیرونبر گرفتن!). در کد بالا، عدد ۷ تحویل داده شد و داخل جعبهٔ natije رفت.print و len که قبلاً استفاده کردی هم تابعاند — فقط آمادهساختِ خودِ پایتوناند!def download_file و def rename_photos، بدون خواندن جزئیات فهمیدهای برنامه چهکار میکند. بعد آخرِ کد را ببین که کدام تابعها صدا زده میشوند و با چه ترتیبی.jam_kon را با عددهای خودت صدا بزن: print(jam_kon(10, 20)) — باید ۳۰ ببینی.لازم نیست همهچیز را از صفر بسازی! میلیونها برنامهنویس، تابعهای آمادهشان را در بستههایی به اسم کتابخانه۸ گذاشتهاند. با دستور import (وارد کن) یک کتابخانه را به برنامهات میآوری — مثل قرضگرفتن یک جعبهابزار کامل از همسایه:
import random
adad = random.randint(1, 6)
print(f"Tas: {adad}")
این کد یک تاس میاندازد! کتابخانهٔ random (تصادفی) را وارد کردیم و از تابعِ randint آن خواستیم یک عدد تصادفی بین ۱ تا ۶ بدهد. آن نقطه در random.randint یعنی «از داخلِ»: تابعِ randint از داخل جعبهابزارِ random.
random برای شانس و datetime برای تاریخ و ساعت). هزاران کتابخانهٔ دیگر را هم میشود جداگانه نصب کرد — هوش مصنوعی هر وقت لازم باشد، خودش دستور نصبش را بهت میدهد.import همیشه بالای کد هستند. با خواندنشان میفهمی برنامه از چه ابزارهایی استفاده میکند: import os یعنی «با فایلها و پوشهها کار دارد»، import requests یعنی «به اینترنت وصل میشود». اگر موقع اجرا خطای ModuleNotFoundError دیدی، یعنی آن کتابخانه روی کامپیوترت نصب نیست — کافی است همین خطا را به هوش مصنوعی نشان بدهی تا دستور نصبش را بدهد.مهارتِ شمارهٔ یکِ یک وایبکدر، نترسیدن از نوشتههای قرمز است! خطا یعنی پایتون دارد مؤدبانه توضیح میدهد کجا گیر کرده — مثل معلمی که زیر غلط املاییات خط میکشد و میگوید کدام کلمه اشتباه است. بیا عمداً یک خطا بسازیم. این را بنویس (عمداً غلط است!):
print(salam)
ترسناک به نظر میرسد؟ فقط دو جایش را بخوان:
NameError: name 'salam' is not defined یعنی «خطای اسم: جعبهای به اسم salam وجود ندارد.» راست هم میگوید — ما هیچوقت جعبهای به این اسم نساختیم و گیومه هم نگذاشتیم که متن حساب شود.line 1 میگوید مشکل در خطِ چندمِ کد است، و خودِ خطِ خطادار را هم نشان میدهد.معروفترین خطاهایی که خواهی دید:
| خطا | معنی به زبان ساده | معمولاً دلیلش |
|---|---|---|
SyntaxError | «جملهات از نظر دستور زبان غلط است» | دونقطهٔ جاافتاده، پرانتز یا گیومهٔ بستهنشده |
NameError | «این اسم را نمیشناسم» | غلط تایپی در اسم متغیر/تابع، یا استفاده قبل از ساختن |
TypeError | «این دو جنس با هم جور درنمیآیند» | جمعکردن متن با عدد، مثل "5" + 3 |
IndentationError | «تورفتگیات بههمریخته» | فاصلهٔ اول خط کم یا زیاد است |
IndexError | «لیست اینقدر عضو ندارد!» | مثلاً از لیستِ ۳تایی عضو شمارهٔ ۵ را خواستهای |
ModuleNotFoundError | «این کتابخانه نصب نیست» | باید کتابخانه را نصب کنی — از هوش مصنوعی بپرس چطور |
print("salam" (بدون پرانتز بسته) و Enter بزن. حالا بدون ترس بگو این چه نوع خطایی است. (جواب: SyntaxError — پرانتز بسته نشده!)حالا همهٔ آجرها را داری! وقتش است چرخهٔ کاملِ وایب کدینگ را یک بار واقعی انجام بدهی. اول یاد بگیریم کد را بهجای پوسته، در یک فایل بنویسیم (برنامههای واقعی همیشه در فایلاند):
bazi.py (پسوندِ .py یعنی فایل پایتون).کیفیتِ کدی که میگیری به کیفیت درخواستت بستگی دارد. این ۴ قانون را رعایت کن:
| قانون | ❌ بد | ✅ خوب |
|---|---|---|
| دقیق بگو چه میخواهی | «یه بازی بساز» | «یک بازی حدس عدد به پایتون بنویس: کامپیوتر عددی بین ۱ تا ۱۰۰ انتخاب کند و من حدس بزنم، و بگوید حدسم بزرگتر است یا کوچکتر» |
| سطحت را بگو | (هیچی نگویی) | «مبتدی هستم؛ کد ساده بنویس و جلوی هر بخش کامنت توضیح بگذار» |
| محیطت را بگو | (هیچی نگویی) | «ویندوز دارم و با IDLE اجرا میکنم» |
| خطا را کامل برگردان | «کار نکرد!» | «این خطا را گرفتم: (کپیِ کامل متن قرمز)» |
# شروع شود، یادداشتِ توضیحی است و کامپیوتر آن را کاملاً نادیده میگیرد — فقط برای آدمهاست! وقتی از هوش مصنوعی میخواهی «با کامنت» بنویسد، یعنی کنار هر تکه کد، توضیحش را هم بنویسد. برای یادگیری معجزه میکند.import random (تاس!)، while (تکرار تا وقتی...)، if/elif/else (تصمیمگیری)، int(...) (تبدیل متن به عدد).این جدول را مثل دیکشنری جیبی نگه دار. موقع خواندنِ هر کد پایتون، جواب «این علامت یعنی چه؟» اینجاست:
| علامت / کلمه | بخوانش: |
|---|---|
= | «بگذار داخل جعبهٔ...» |
== | «آیا برابر است با...؟» |
" " یا ' ' | «این یک متن است» |
[ ] | «لیست» (یا: عضو شمارهٔ فلان از لیست) |
{ } | «دیکشنری» (دفترچهٔ کلید ← مقدار) یا جای خالی در f-string |
( ) | «ورودیهای تابع» — چیزی که به دستور میدهیم |
: در آخر خط | «حالا کارهای داخلش را میگویم...» (خطهای بعدی تو میروند) |
| تورفتگی اول خط | «من داخلِ دستورِ بالایی هستم» |
# | «یادداشت برای آدمها — کامپیوتر رد میشود» |
if / elif / else | «اگر / وگرنه اگر / وگرنه» |
for ... in ... | «برای تکتکِ ... در ...» |
while | «تا وقتی که ... تکرار کن» |
def | «دستورپخت جدید تعریف میکنم» |
return | «نتیجه را تحویل بده و برگرد» |
import | «جعبهابزار آماده را بیاور» |
نقطه، مثل random.randint | «از داخلِ» — ابزارِ فلان از جعبهابزارِ فلان |
input("...") | «از کاربر سؤال بپرس و جوابش را بگیر» (جوابش همیشه متن است؛ برای عددشدن دورش int( ) میگذارند) |
print(...) ولی خطای SyntaxError گرفتم
علت: معمولاً یکی از این سهتا: حرف بزرگ نوشتهای (Print)، گیومه یا پرانتز را نبستهای، یا بهجای گیومهٔ انگلیسیِ " از گیومهٔ فارسیِ «» استفاده کردهای.name = "Sara")، بعد استفادهاش کن. املا را حرفبهحرف چک کن.if و for
علت: تورفتگیِ خطهای داخلی درست نیست.print("سلام") کاملاً درست کار میکند.pip install ... که در ابزاری به اسم Command Prompt تایپ میشود — هوش مصنوعی راهنماییات میکند).[ ] و دیکشنری { } را بخوانیقدم بعدی؟ همین امشب یک پروژهٔ کوچکِ بهدردبخور از هوش مصنوعی بخواه — مثلاً «برنامهای که تولد دوستانم را یادآوری کند» — و چرخه را بچرخان. هر پروژه، ده برابرِ هر آموزشی یادت میدهد. 🚀