در این فصل چه یاد میگیری#
تا اینجا هر چیزی که میخواستی، همان لحظه مینوشتی و میرفت. حالا یاد میگیری مقدارها را نگه داری: اسمی رویشان بگذاری، بعداً دوباره صدایشان بزنی، و رویشان حساب کنی. این کوچکترین قدمِ ممکن است و در عینِ حال همان چیزی است که یک دستور را به یک برنامه تبدیل میکند. ضمناً میفهمی پایتون هر مقدار را در یک نوع میبیند، و چرا این نوع تعیین میکند که با آن مقدار چه کارهایی میشود کرد.

آخر این فصل میتوانی:
- یک مقدار را در متغیر ذخیره کنی و بعداً بهکارش ببری
- با f-string متن و مقدار را در یک جمله ترکیب کنی
- چهار نوعِ پایهٔ پایتون را تشخیص بدهی و با
type()نوعِ هر چیزی را بپرسی - تفاوتِ
/و//و%را بگویی - خطای
TypeErrorرا بشناسی و با تبدیلِ نوع رفعش کنی
قبل از شروع#
از فصل ۱: print() هر چیزی را چاپ میکند، و گیومه یعنی «این متن است، نه دستور».
از فصل ۱: نوتبوک را از بالا به پایین اجرا کن — این فصل مهمترش میکند، چون سلولهای بعدی به متغیرهایی که در سلولهای قبلی ساختهای وابستهاند.
📓 نوتبوک: نوتبوک این فصل را در Colab باز کن — همهٔ کدهای این فصل آماده و بهترتیب داخلش هست.
۱. متغیر: برچسبی که روی یک مقدار میچسبانی#
name = "سارا"
age = 27
print(name)
print(age)
سارا
27
علامتِ = اینجا «مساوی» ریاضی نیست؛ یعنی «این مقدار را بگذار در این اسم». سمتِ راست محاسبه میشود، و نتیجهاش در اسمِ سمتِ چپ ذخیره میشود. به این اسم میگویند متغیر (variable).
از این لحظه به بعد، هر جای نوتبوک بنویسی name، پایتون همان "سارا" را میفهمد — تا وقتی که چیزِ دیگری داخلش بگذاری.
age = age + 1
print(age)
28
این خط در ریاضی بیمعناست («عدد یکی بیشتر از خودش است»؟) ولی در برنامهنویسی کاملاً واضح است: اول سمتِ راست حساب میشود (27 + 1 میشود 28)، بعد نتیجه در age گذاشته میشود. مقدارِ قبلی از بین میرود.
✅ چک کن: خروجی باید
28باشد. اگر27دیدی، یعنی سلول را دوباره اجرا نکردهای. اگر29دیدی، یعنی سلول را دو بار اجرا کردهای — و همینجا اولین نشانهٔ چیزی را دیدی که در فصلِ ۱۰ کامل بازش میکنیم: نوتبوک حافظه دارد، و اجرای دوبارهٔ یک سلول همیشه بیضرر نیست.
نامِ متغیر را خودت انتخاب میکنی، ولی سه قاعده دارد: با حرف یا _ شروع شود (نه با عدد)، فاصله نداشته باشد، و به بزرگی و کوچکیِ حروف حساس است — age و Age دو متغیرِ کاملاً جدا هستند.
💡 نکته: اسمِ متغیر را انگلیسی و معنادار بگذار.
xوa1امروز واضحاند و سه هفتهٔ دیگر معما. در کلِ این دوره اسمها انگلیسیاند حتی وقتی داده فارسی است — چون هر کدی که بعداً بخوانی همینطور است.
۲. f-string: متن و مقدار را با هم بنویس#
چاپِ خشکِ متغیر کافی نیست؛ معمولاً میخواهی داخلِ یک جمله بنشیند.
print(f"{name} {age} ساله است.")
سارا 28 ساله است.
آن حرفِ f قبل از گیومه به پایتون میگوید «داخلِ این متن دنبالِ آکولاد بگرد». هر چیزی که بینِ { و } باشد محاسبه میشود و نتیجهاش سرِ جایش مینشیند. به این میگویند f-string و در کلِ دوره ابزارِ اصلیِ ساختنِ پیام است.
داخلِ آکولاد فقط اسمِ متغیر نیست؛ هر محاسبهای میتواند باشد:
print(f"سال دیگر {age + 1} ساله میشود.")
سال دیگر 29 ساله میشود.
۳. نوع: پایتون هر مقدار را چه میبیند#
هر مقدار در پایتون یک نوع (type) دارد، و نوع تعیین میکند چه کارهایی با آن مقدار مجاز است. چهار نوعِ پایهای که در کلِ این دوره با آنها کار داری:
print(type(name))
print(type(age))
print(type(3.5))
print(type(True))
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
str(ازstring) — متن. هر چیزی داخلِ گیومه.int(ازinteger) — عددِ صحیح، بدونِ اعشار.float— عددِ اعشاری. اسمش از «ممیزِ شناور» میآید.bool(ازboolean) — فقط دو مقدار دارد:TrueوFalse. با حرفِ بزرگ، و بدونِ گیومه.
تابعِ type() هر وقت گیج شدی جوابِ قطعی میدهد. عادت کن وقتی کدی رفتارِ عجیبی دارد، اول نوعِ متغیرها را بپرسی — این سادهترین و پرکاربردترین تکنیکِ اشکالزدایی در پایتون است.
قبل از ادامه، جواب بده: "27" و 27 هر دو بیستوهفت را نشان میدهند. آیا از نظرِ پایتون یکی هستند؟ جواب: نه. اولی str است و دومی int. اولی یک متن است که تصادفاً از رقم ساخته شده؛ نمیشود رویش حساب کرد. بخشِ ۵ نشان میدهد این تفاوت چطور به یک خطای واقعی تبدیل میشود.
۴. عملگرها: حساب و مقایسه#
print(8 / 2)
print(8 // 3)
print(9 % 2)
print(2 ** 10)
4.0
2
1
1024
اینجا بدهیِ فصلِ قبل را میپردازیم: / همیشه float میدهد، حتی وقتی جواب رُند است. برای همین 8 / 2 شد 4.0 نه 4. اگر عددِ صحیح میخواهی از // استفاده کن که تقسیمِ صحیح است و اعشار را دور میاندازد. % باقیماندهٔ تقسیم را میدهد و ** توان است.
% بیربط بهنظر میرسد ولی یکی از پرکاربردترینهاست: n % 2 اگر صفر باشد، n زوج است. در فصلِ حلقهها مرتب بهکارش میبریم.
عملگرهای مقایسه جوابشان همیشه bool است:
print(age > 18)
print(age == 28)
print(name != "سارا")
True
True
False
⚠️ مواظب باش:
=و==دو چیزِ کاملاً متفاوتاند.=مقدار را ذخیره میکند؛==میپرسد «آیا این دو برابرند؟» وTrueیاFalseمیدهد. جابهجا نوشتنشان یکی از رایجترین اشتباهاتِ تازهکارهاست و در فصلِ بعدی که شرط داریم، دردسرساز میشود.
۵. یک خطای واقعی: جمعِ متن و عدد#
حالا ببینیم آن تفاوتِ نوع چطور خودش را نشان میدهد. یک سلولِ خالی بساز و این را امتحان کن:
print("سن: " + age)
TypeError: can only concatenate str (not "int") to str
پیام دقیقاً میگوید چه شده: «فقط str را میشود به str چسباند، نه int». علامتِ + برای دو متن یعنی «بههم بچسبان» و برای دو عدد یعنی «جمع کن» — ولی برای یکی از هرکدام تعریفی ندارد و پایتون بهجای حدسزدن، میایستد و شکایت میکند.
این رفتار عمدی و خوب است. زبانی که اینجا حدس بزند، سرِ دادهٔ واقعی سکوت میکند و جوابِ غلط میدهد؛ پایتون ترجیح میدهد همانجا داد بزند.
دو راهِ رفع:
print("سن: " + str(age))
print(f"سن: {age}")
سن: 28
سن: 28
راهِ اول عدد را با str() به متن تبدیل میکند. راهِ دوم f-string است که خودش این تبدیل را انجام میدهد. راهِ دوم تقریباً همیشه بهتر است و در کلِ این دوره از همان استفاده میکنیم.
تبدیل در جهتِ عکس هم کار میکند:
text_number = "42"
print(int(text_number) + 8)
print(float("3.5") * 2)
50
7.0
این را در ترمِ ۲ خیلی زیاد لازم میشوی: وقتی داده را از یک فایل میخوانی، همهچیز متن است — حتی ستونی که پُر از عدد است. تبدیلِ نوع اولین کاری است که روی دادهٔ واقعی میکنی.
🔧 اگر کار نکرد:
ValueError: invalid literal for int() with base 10: 'سلام'یعنی خواستهای چیزی را به عدد تبدیل کنی که اصلاً عدد نیست.int()جادو نمیکند؛ فقط متنی را که واقعاً از رقم ساخته شده تبدیل میکند. اگر روی دادهٔ واقعی این را دیدی، معنایش این است که یک ردیفِ خراب داری — و همینجاست که کارِ دادهکاوی شروع میشود.
📏 اندازه بگیر: هر وقت خروجیای گرفتی که انتظارش را نداشتی، اول
type()را روی متغیرهای دخیل صدا بزن. بیشترِ «چرا این کار نمیکند؟»های هفتهٔ اول، جوابشان یکstrاست که فکر میکردیintاست.
🤖 از دستیارت بپرس: «در پایتون فرقِ
intوfloatچیست و چرا0.1 + 0.2دقیقاً0.3نمیشود؟» جوابش را بخوان ولی خودت همprint(0.1 + 0.2)را اجرا کن و ببین چه میدهد. این یکی از قدیمیترین شگفتیهای کارِ با عددِ اعشاری در همهٔ زبانهاست و بد نیست از همین حالا بدانی وجود دارد.
واژههای تازهٔ این فصل#
| کلمه | تلفظ به حروف فارسی | یعنی چه |
|---|---|---|
| variable | وَریِبِل | اسمی که روی یک مقدار میگذاری تا بعداً صدایش بزنی |
| type | تایپ | نوعِ یک مقدار؛ تعیین میکند چه کارهایی با آن مجاز است |
| str / int / float / bool | اِستیآر / اینت / فلوت / بول | متن / عددِ صحیح / عددِ اعشاری / درست-نادرست |
| f-string | اِفاسترینگ | متنی که با f شروع میشود و داخلِ {} مقدار میگیرد |
| TypeError | تایپ اِرور | خطای ناسازگاریِ نوع — کاری خواستهای که با این نوع تعریف نشده |
تمرینها
اول خودت فکر کن یا امتحان کن — بعد اینجا را باز کن.
در فصل بعد#
حالا میتوانی یک مقدار را نگه داری. ولی دادهٔ واقعی هیچوقت یک مقدار نیست — یک مجموعه است: قیمتِ صد محصول، نامِ هزار مشتری، دمای هر روزِ سال. فصلِ بعد اولین ظرفِ چندتایی را میآورد: list. آنجا یاد میگیری چطور دهها مقدار را در یک متغیر نگه داری و به هرکدام جداگانه دسترسی داشته باشی — و این دقیقاً همان قدمی است که کارِ داده از آنجا شروع میشود.
به آخر این فصل رسیدی!
اگر ساختی و جواب داد، این دکمه مال توست.