📘 یادداشت‌های جلسه صفر و یک | مبانی پایتون

آموزش کامل متغیرها، انواع داده (int, str, float, bool)، عملگرها، چسباندن رشته‌ها، ورودی/خروجی، تبدیل نوع و پروژه تبدیل دما | به همراه مثال‌ها و تمرینات متعدد

📑 فهرست مطالب

🔰 مقدمه: شروع کار و اولین دستورات

به دنیای برنامه‌نویسی خوش آمدید! در پایتون، ما با دو مفهوم اساسی شروع می‌کنیم: متغیرها و دستورات.

متغیر (Variable) چیست؟ یک متغیر را مثل یک جعبه‌ی برچسب‌دار در نظر بگیرید. شما می‌توانید هر چیزی را داخل این جعبه بگذارید (یک عدد، یک متن،...) و یک برچسب (نام) روی آن بزنید. از این به بعد، هر وقت به آن نام اشاره کنید، پایتون می‌داند که منظور شما محتویات داخل آن جعبه است.

حال که تعریف متغیرها و معنی syntax (قواعد دستوری زبان یا همان گرامر برنامه‌نویسی) را دریافت کردید، آماده‌ی کدنویسی هستید.

✍️ تمرین: دو عدد دلخواه را در a و b ذخیره کنید. در اینجا، a و b نام برچسب جعبه‌های ما هستند.
🐍 تمرین ۱
a = 42
b = 100

📦 متغیرها (Variables) – جعبه‌های برچسب‌دار

در پایتون برای ساختن متغیر کافی است یک نام انتخاب کرده و با علامت = مقداری به آن بدهید. نام متغیر باید با حرف یا _ شروع شود و نمی‌تواند شامل فاصله یا کاراکترهای خاص باشد. همچنین نمی‌تواند از کلمات کلیدی پایتون (مانند print، if، for) استفاده کند.

🐍 تعریف متغیرها
x = 10
name = 'ali'
pi = 3.14
✍️ تمرین: دو متغیر به نام‌های first_name و last_name ساخته و نام و نام خانوادگی خود را در آنها ذخیره کنید.
🐍 پاسخ
first_name = 'عرفان'
last_name = 'عمادی'

🖨️ دستور print() – نمایش خروجی

کامپیوتر به طور پیش‌فرض «ساکت» است. وقتی می‌نویسید a + b، کامپیوتر این محاسبه را در حافظه‌ی خودش انجام می‌دهد اما نتیجه را به شما نشان نمی‌دهد. برای اینکه به کامپیوتر بگوییم نتیجه‌ی کاری را به ما نشان دهد، باید صراحتاً از دستور print() (به معنی «چاپ کن») استفاده کنیم. هر چیزی که داخل پرانتزهای print() بگذارید، روی صفحه نمایش داده می‌شود.

🐍 چاپ نتیجه محاسبه
print(a + b)

در زبان پایتون که زبان سطح بالا است، می‌توانیم اعمال ریاضی و منطقی را مانند کتاب درسی بنویسیم. علامت جمع، تفریق، ضرب و تقسیم را در پایتون می‌توان اجرا کرد و نتیجه را دید. همچنین می‌توانید عبارت‌های محاسباتی مانند ۶ + ۶ - ۴ * ۶ را مستقیماً داخل print() قرار دهید.

🐍 محاسبه مستقیم
print(6 + 6 - 4 * 6)
💡 برای نوشتن توضیح و خطی که اجرا نشود از علامت # استفاده می‌کنیم (خط تعلیق یا توضیح). کامپیوتر هر چیزی که بعد از # بیاید را نادیده می‌گیرد.
🐍 کامنت (توضیح)
# این یک کامنت است و اجرا نمی‌شود
print('سلام')
✍️ تمرین: دستور print() می‌تواند متن‌ها را هم چاپ کند. متن‌ها (که به آن‌ها «رشته» می‌گوییم) باید داخل علامت نقل قول (" " یا ' ') باشند. سعی کنید کد زیر را بنویسید و نام خودتان را جایگزین کنید:
🐍 معرفی خود
print('سلام، اسم من عرفان است')
print(10 * 5)  # همچنین می‌توانید محاسبات را مستقیم چاپ کنید

🧩 انواع داده (Data Types)

با بزرگ‌تر شدن برنامه‌ها، نیاز داریم داده‌های بیشتری را ذخیره کنیم. متغیرهای ما فقط «عدد» نگه نمی‌دارند. کامپیوتر باید بداند که داده‌ی داخل جعبه از چه «نوع» یا «جنسی» است تا بتواند عملیات درستی روی آن انجام دهد.

برای مثال، آیا شماره تلفن 091234567 یک عدد برای محاسبه است (مثلاً برای جمع زدن) یا فقط رشته‌ای از ارقام برای ذخیره و نمایش است؟ کامپیوتر این تفاوت را باید بداند.

مهم‌ترین انواع داده در پایتون عبارتند از:

⚠️ توجه مهم: در پایتون، 100 و "100" با هم تفاوت دارند. اولی عدد (برای محاسبات) و دومی نوشته (برای نمایش) است.

🔍 تابع type() – کشف نوع داده

برای دانستن نوع یک متغیر از تابع type() استفاده می‌کنیم. البته خود type() چیزی چاپ نمی‌کند (مثل محاسبات در حافظه انجام می‌شود)، پس نتیجه‌ی آن را به print() می‌دهیم تا به ما نشان داده شود:

🐍 مشاهده نوع داده
a = 42
b_text = 'سلام'
c_text_number = '100'

print(type(a))           # 
print(type(b_text))       # 
print(type(c_text_number))# 
💡 نکته: «کلاس» در خروجی type() یعنی نوع داده. مثلاً <class 'int'> یعنی عدد صحیح.

➕ چسباندن رشته‌ها (Concatenation)

عملگر + برای رشته‌ها به معنای چسباندن (Concatenation) است. به مثال زیر توجه کنید:

🐍 چسباندن رشته‌ها
a = 'سل'
b = 'ام'
c = a + b   # سلام
print(c)
✍️ تمرین: دو متغیر first_name و last_name را ساخته و با استفاده از الحاق (+)، نام کامل خود را در یک متغیر جدید به نام full_name ذخیره کرده و آن را چاپ کنید. چالش: چطور یک فاصله (space) بین نام و نام خانوادگی خود ایجاد می‌کنید؟
🐍 پاسخ
first_name = 'سارا'
last_name = 'علوی'
full_name = first_name + ' ' + last_name
print(full_name)  # سارا علوی

⚠️ خطای TypeError و تبدیل نوع

حالا بیایید یک int (عدد) را با یک str (نوشته) جمع کنیم. علامت + برای پایتون دو معنی دارد: «جمع ریاضی» برای اعداد، و «چسباندن» برای نوشته‌ها.

وقتی می‌خواهید یک عدد و یک نوشته را با + جمع کنید، پایتون گیج می‌شود! آیا باید محاسبه ریاضی انجام دهد یا باید آن‌ها را به هم بچسباند؟

🐍 خطای TypeError
a = 42
b_str = '100'
print(a + b_str)

اجرای این کد با خطا (Error) مواجه می‌شود. پایتون به شما خطایی به نام TypeError می‌دهد، که به زبان ساده یعنی: «خطای نوع داده! من نمی‌دانم چطور یک عدد را با یک نوشته جمع کنم. اینها دو جنس متفاوت هستند.»

برای رفع خطای بالا، باید هر دو طرف را از یک جنس (یعنی هر دو رشته) کنیم. ما نمی‌توانیم "سلام" را به عدد تبدیل کنیم، اما می‌توانیم هر عددی را به رشته تبدیل کنیم. برای این کار از تابع str() استفاده می‌کنیم:

🐍 تبدیل عدد به رشته
a = 42
b_str = '100'
a_str = str(a)
c = a_str + b_str
print(c)  # '42100'

🔄 تبدیل نوع (Type Casting)

دلیل پرداختن به انواع داده‌ها این است که هر نوع داده کاربردهای خاص خود را دارد. همانطور که دیدیم، نمی‌توان int و str را مستقیماً با + جمع کرد. ما یاد گرفتیم که با str() هر چیزی را به رشته تبدیل کنیم. برعکس این کار هم ممکن است! به این کار تبدیل نوع (Type Casting) می‌گویند.

🐍 تبدیل رشته به عدد
age_str = '30'
age_int = int(age_str)
print(age_int * 2)  # 60
⚠️ هشدار ValueError: شما نمی‌توانید هر رشته‌ای را به عدد تبدیل کنید. اگر سعی کنید رشته‌ای را که شبیه عدد نیست (مثل "سلام" یا "10.5a") با int() تبدیل کنید، پایتون با خطای ValueError (خطای مقدار) متوقف می‌شود و می‌گوید: «این مقداری که دادی، قابل تبدیل به عدد صحیح نیست!»

🔢 نوع داده float (اعداد اعشاری)

برای ذخیره اعدادی که بخش اعشاری دارند (مثل قیمت‌ها، میانگین، وزن یا دما) از نوع float (به معنی شناور) استفاده می‌کنیم. پایتون به صورت خودکار با دیدن ممیز (نقطه .)، نوع آن را float تشخیص می‌دهد.

🐍 اعداد اعشاری
k = 3.14
print(type(k))      # 
k_int = 3.0
print(type(k_int))  # 
✍️ تمرین: متغیر k را برابر ۳.۰ قرار داده و نوع آن را چاپ کنید.
🐍 پاسخ
k = 3.0
print(type(k))  # 

⚖️ تفاوت = و ==

این یکی از مهم‌ترین مفاهیم و رایج‌ترین اشتباهات مبتدیان است!

🐍 مثال مقایسه
x = 10
print(x == 10)  # True
print(x == 5)   # False

✅ نوع داده bool (بولی)

نوع داده bool (مخفف Boolean) فقط دو مقدار ممکن دارد: True (درست) یا False (غلط). نوع bool پاسخ تمام سوالات مقایسه‌ای در برنامه‌نویسی است.

🐍 مقایسه‌ها
x = 10
y = 5
print(x == 10)   # True
print(x == y)     # False
print(x > y)      # True
print(y < 2)      # False
print('test' == 'Test')  # False (پایتون به حروف بزرگ و کوچک حساس است)
✍️ تمرین: کارآگاه بولی

خروجی کدهای زیر را حدس بزنید و سپس آن‌ها را اجرا کنید. چرا خروجی‌ها متفاوت هستند؟

🐍 حدس بزنید
a = 5
b = '5'
print(type(a))
print(type(b))
print(a == 5)
print(a == b)

پاسخ: خروجی آخر False است، چون جنس داده‌ها متفاوت است (int در مقابل str) و پایتون آن‌ها را برابر نمی‌داند.

⌨️ تابع input() – دریافت ورودی از کاربر

برنامه‌های واقعی نیاز دارند با کاربر تعامل داشته باشند و از او اطلاعات بگیرند. این کار با تابع input() انجام می‌شود.

🐍 گرفتن اسم کاربر
name = input('لطفا نام خود را وارد کنید: ')
print('سلام، ' + name + '! به پایتون خوش آمدی.')
⚠️ نکته حیاتی: input() همیشه str برمی‌گرداند!
این مهم‌ترین قانونی است که باید در مورد input() بدانید. مهم نیست کاربر چه چیزی وارد کند (حتی اگر عدد 25 را تایپ کند)، input() همیشه خروجی از نوع رشته (str) به ما می‌دهد.
✍️ تمرین: متغیری را با input() بگیرید و سپس نوع آن را چاپ کنید؛ یک‌بار دادهٔ غیرعددی و بار دیگر دادهٔ عددی وارد کنید.
🐍 مشاهده نوع ورودی
e = input()
print(e, type(e))

برای دریافت ورودی عددی از کاربر، باید بلافاصله خروجی input() را با int() (برای عدد صحیح) یا float() (برای عدد اعشاری) به عدد تبدیل کنیم. این روش صحیح و امن است.

🐍 روش صحیح دریافت عدد
age_str = input('سن خود را وارد کنید: ')
age_int = int(age_str)
print('شما 5 سال دیگر', age_int + 5, 'ساله خواهید شد.')

# یا به صورت خلاصه:
age = int(input('سن خود را وارد کنید: '))
print('شما پارسال', age - 1, 'ساله بودید.')
💡 نکته مهم: در برخی جزوه‌های قدیمی از eval(input()) استفاده شده است. استفاده از eval به دلایل امنیتی پیشرفته هرگز توصیه نمی‌شود (چون به کاربر اجازه اجرای کدهای مخرب را می‌دهد). روش استاندارد، امن و صحیح، استفاده از int(input()) یا float(input()) است.

📝 مقداردهی چند متغیر در یک خط

در پایتون می‌توان در یک خط به چند متغیر مقدار داد (یک روش خلاصه‌نویسی):

🐍 مقداردهی همزمان
x, y, z = 'انگور', 'لوز', 'موز'
print(x)
print(y)
print(z)
✍️ تمرین: سه متغیر a، b، c را مقدار 'N' داده و چاپ کنید.
🐍 پاسخ
a, b, c = 'N', 'N', 'N'
print(a)
print(b)
print(c)

🔑 کلمات کلیدی (Keywords)

در پایتون کلماتی وجود دارند که برای دستورات خاصی رزرو شده‌اند (مثل print، if، else، for، while). به این‌ها کلمات کلیدی (Keywords) می‌گویند و شما نمی‌توانید از آن‌ها به عنوان نام متغیر (برچسب جعبه) استفاده کنید.

اگر بنویسید print = "سلام"، شما در واقع برچسب دستور «چاپ کن» پایتون را کَنده‌اید و برچسب «سلام» را روی آن چسبانده‌اید! از آن به بعد، پایتون دیگر نمی‌داند چطور چیزی را چاپ کند و کد شما خراب می‌شود. پس همیشه از نام‌های معنی‌دار و غیراختصاصی برای متغیرها استفاده کنید (مثل age، name، user_score).

🚀 پروژه عملی: تبدیل فارنهایت به سلسیوس

بیایید برنامه‌ای بنویسیم که دما را به فارنهایت از کاربر بگیرد (که ممکن است اعشاری باشد، پس از float استفاده می‌کنیم) و به سلسیوس تبدیل کند.

فرمول: C = (F - 32) * 5 / 9

روش مرحله‌به‌مرحله (خواناتر):

🌡️ تبدیل دما مرحله به مرحله
f_str = input('دما به فارنهایت: ')
f = float(f_str)
d = (f - 32) * 5 / 9
print('دمای شما به سلسیوس:', d)

روش خلاصه‌تر (در دو خط):

🌡️ تبدیل دما خلاصه
f = float( input('دما به فارنهایت: ') )
d = (f - 32) * 5 / 9
print('دمای شما به سلسیوس:', d)

✍️ تمرینات پایانی

تمرین 1: ماشین حساب ساده
برنامه‌ای بنویسید که:
  1. یک عدد (num1) از کاربر بگیرد (با int(input())).
  2. عدد دومی (num2) از کاربر بگیرد.
  3. سپس حاصل جمع، تفریق، ضرب و تقسیم آن دو عدد را در خطوط جداگانه چاپ کند.
تمرین 2: محاسبه سن
آیا می‌توانید سال تولد کاربر را بپرسید (مثال: 1378) و سن تقریبی او را محاسبه و چاپ کنید؟ (راهنمایی: `1404 - سال تولد`)
تمرین 3: دریافت چند ورودی و چاپ جمله
برنامه‌ای بنویسید که ۳ کلمه از کاربر بگیرد و سپس آنها را در قالب یک جمله چاپ کند.

📌 خلاصه و جمع‌بندی

موارد آموزشی پوشش داده‌شده:

  • متغیر: جعبه‌ای برای ذخیره داده‌ها با یک نام.
  • انواع داده اصلی: int (عدد صحیح)، str (رشته)، float (اعشاری)، bool (بولی).
  • تبدیل نوع (Type Casting): با int()، str()، float().
  • خروجی: print() — نمایش اطلاعات.
  • ورودی: input() — گرفتن ورودی از کاربر (خروجی همیشه str است).
  • عملگرها: +، -، *، / برای اعداد؛ + برای چسباندن رشته‌ها (Concatenation).
  • تفاوت = و ==: اولی انتساب، دومی مقایسه.
🎯 گام بعدی: پس از تسلط به این مباحث، سراغ شرط‌ها (if/else) و حلقه‌ها بروید.
✅ کپی شد!