آموزش کامل متغیرها، انواع داده (int, str, float, bool)، عملگرها، چسباندن رشتهها، ورودی/خروجی، تبدیل نوع و پروژه تبدیل دما | به همراه مثالها و تمرینات متعدد
به دنیای برنامهنویسی خوش آمدید! در پایتون، ما با دو مفهوم اساسی شروع میکنیم: متغیرها و دستورات.
متغیر (Variable) چیست؟ یک متغیر را مثل یک جعبهی برچسبدار در نظر بگیرید. شما میتوانید هر چیزی را داخل این جعبه بگذارید (یک عدد، یک متن،...) و یک برچسب (نام) روی آن بزنید. از این به بعد، هر وقت به آن نام اشاره کنید، پایتون میداند که منظور شما محتویات داخل آن جعبه است.
حال که تعریف متغیرها و معنی syntax (قواعد دستوری زبان یا همان گرامر برنامهنویسی) را دریافت کردید، آمادهی کدنویسی هستید.
a و b ذخیره کنید. در اینجا، a و b نام برچسب جعبههای ما هستند.
a = 42
b = 100
در پایتون برای ساختن متغیر کافی است یک نام انتخاب کرده و با علامت = مقداری به آن بدهید. نام متغیر باید با حرف یا _ شروع شود و نمیتواند شامل فاصله یا کاراکترهای خاص باشد. همچنین نمیتواند از کلمات کلیدی پایتون (مانند print، if، for) استفاده کند.
x = 10
name = 'ali'
pi = 3.14
first_name و last_name ساخته و نام و نام خانوادگی خود را در آنها ذخیره کنید.
first_name = 'عرفان'
last_name = 'عمادی'
کامپیوتر به طور پیشفرض «ساکت» است. وقتی مینویسید a + b، کامپیوتر این محاسبه را در حافظهی خودش انجام میدهد اما نتیجه را به شما نشان نمیدهد. برای اینکه به کامپیوتر بگوییم نتیجهی کاری را به ما نشان دهد، باید صراحتاً از دستور print() (به معنی «چاپ کن») استفاده کنیم. هر چیزی که داخل پرانتزهای print() بگذارید، روی صفحه نمایش داده میشود.
print(a + b)
در زبان پایتون که زبان سطح بالا است، میتوانیم اعمال ریاضی و منطقی را مانند کتاب درسی بنویسیم. علامت جمع، تفریق، ضرب و تقسیم را در پایتون میتوان اجرا کرد و نتیجه را دید. همچنین میتوانید عبارتهای محاسباتی مانند ۶ + ۶ - ۴ * ۶ را مستقیماً داخل print() قرار دهید.
print(6 + 6 - 4 * 6)
# استفاده میکنیم (خط تعلیق یا توضیح). کامپیوتر هر چیزی که بعد از # بیاید را نادیده میگیرد.# این یک کامنت است و اجرا نمیشود
print('سلام')
print() میتواند متنها را هم چاپ کند. متنها (که به آنها «رشته» میگوییم) باید داخل علامت نقل قول (" " یا ' ') باشند. سعی کنید کد زیر را بنویسید و نام خودتان را جایگزین کنید:
print('سلام، اسم من عرفان است')
print(10 * 5) # همچنین میتوانید محاسبات را مستقیم چاپ کنید
با بزرگتر شدن برنامهها، نیاز داریم دادههای بیشتری را ذخیره کنیم. متغیرهای ما فقط «عدد» نگه نمیدارند. کامپیوتر باید بداند که دادهی داخل جعبه از چه «نوع» یا «جنسی» است تا بتواند عملیات درستی روی آن انجام دهد.
برای مثال، آیا شماره تلفن 091234567 یک عدد برای محاسبه است (مثلاً برای جمع زدن) یا فقط رشتهای از ارقام برای ذخیره و نمایش است؟ کامپیوتر این تفاوت را باید بداند.
مهمترین انواع داده در پایتون عبارتند از:
int (Integer): برای اعداد صحیح (مثل 42، -10، 200). اینها اعدادی هستند که برای محاسبات ریاضی استفاده میشوند.str (String): برای نوشتهها یا رشتهها. رشتهها همیشه داخل ' ' یا " " قرار میگیرند (مثل "سلام"، 'علی'، یا حتی "100"). اگر عددی داخل علامت نقل قول باشد، پایتون با آن مثل یک متن رفتار میکند نه یک عدد.float (Float): برای اعداد اعشاری (مثل 3.14، -0.5، 10.0).bool (Boolean): فقط دو مقدار True (درست) یا False (غلط).100 و "100" با هم تفاوت دارند. اولی عدد (برای محاسبات) و دومی نوشته (برای نمایش) است.
برای دانستن نوع یک متغیر از تابع 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) است. به مثال زیر توجه کنید:
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) # سارا علوی
حالا بیایید یک int (عدد) را با یک str (نوشته) جمع کنیم. علامت + برای پایتون دو معنی دارد: «جمع ریاضی» برای اعداد، و «چسباندن» برای نوشتهها.
وقتی میخواهید یک عدد و یک نوشته را با + جمع کنید، پایتون گیج میشود! آیا باید محاسبه ریاضی انجام دهد یا باید آنها را به هم بچسباند؟
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'
دلیل پرداختن به انواع دادهها این است که هر نوع داده کاربردهای خاص خود را دارد. همانطور که دیدیم، نمیتوان int و str را مستقیماً با + جمع کرد. ما یاد گرفتیم که با str() هر چیزی را به رشته تبدیل کنیم. برعکس این کار هم ممکن است! به این کار تبدیل نوع (Type Casting) میگویند.
int(): سعی میکند یک رشته یا عدد اعشاری را به عدد صحیح تبدیل کند.float(): سعی میکند یک رشته یا عدد صحیح را به عدد اعشاری تبدیل کند.str(): هر چیزی را به رشته تبدیل میکند.age_str = '30'
age_int = int(age_str)
print(age_int * 2) # 60
"سلام" یا "10.5a") با int() تبدیل کنید، پایتون با خطای ValueError (خطای مقدار) متوقف میشود و میگوید: «این مقداری که دادی، قابل تبدیل به عدد صحیح نیست!»
برای ذخیره اعدادی که بخش اعشاری دارند (مثل قیمتها، میانگین، وزن یا دما) از نوع float (به معنی شناور) استفاده میکنیم. پایتون به صورت خودکار با دیدن ممیز (نقطه .)، نوع آن را float تشخیص میدهد.
k = 3.14
print(type(k)) #
k_int = 3.0
print(type(k_int)) #
k را برابر ۳.۰ قرار داده و نوع آن را چاپ کنید.
k = 3.0
print(type(k)) #
این یکی از مهمترین مفاهیم و رایجترین اشتباهات مبتدیان است!
= (یک مساوی): عملگر انتساب (Assignment) است. این یک دستور است. یعنی «محتوای سمت راست را در متغیر (جعبه) سمت چپ بریز». (x = 5 یعنی 5 را در x بریز).== (دو مساوی): عملگر مقایسه (Comparison) است. این یک سوال است. یعنی «آیا دو طرف با هم برابر هستند؟». جواب این سوال همیشه True (درست) یا False (غلط) است.x = 10
print(x == 10) # True
print(x == 5) # False
نوع داده 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() انجام میشود.
name = input('لطفا نام خود را وارد کنید: ')
print('سلام، ' + name + '! به پایتون خوش آمدی.')
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)
در پایتون کلماتی وجود دارند که برای دستورات خاصی رزرو شدهاند (مثل 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)
num1) از کاربر بگیرد (با int(input())).num2) از کاربر بگیرد.موارد آموزشی پوشش دادهشده:
int (عدد صحیح)، str (رشته)، float (اعشاری)، bool (بولی).int()، str()، float().print() — نمایش اطلاعات.input() — گرفتن ورودی از کاربر (خروجی همیشه str است).+، -، *، / برای اعداد؛ + برای چسباندن رشتهها (Concatenation).= و ==: اولی انتساب، دومی مقایسه.if/else) و حلقهها بروید.