اولین قدمها
هر برنامهای در دنیا سه کار انجام میدهد: چیزی میگیرد، کاری روی آن انجام میدهد و چیزی برمیگرداند. در این فصل هر سه را یاد میگیرید.
۱. دستور print
print یک تابع است. تابع یعنی دستوری که یک
اسم دارد و بعد از اسمش پرانتز میگذاریم و چیزی را داخل پرانتز به آن
میدهیم. کار این یکی ساده است: هر چه به آن بدهید روی صفحه چاپ میکند و
بعد به خط بعد میرود.
# The classic first program.
# print() writes its arguments to the screen and then moves to a new line.
print('Hello World!')
اولین برنامه: نمونه 01_hello_world.py
Hello World!
شرح مثال
- متن باید داخل گیومه باشد. تکگیومه
'و جفتگیومه"هیچ فرقی با هم ندارند، فقط باید گیومهای که باز میکنید را با همان نوع ببندید. - اگر گیومه را فراموش کنید، پایتون فکر میکند
Helloنام یک متغیر است و خطایNameErrorمیدهد. - هر
printیک خط چاپ میکند. پس چند دستور پشت سر هم، چند خط میسازد.
# Every print() call writes one line, so these five calls draw a triangle.
print('*')
print('**')
print('***')
print('****')
print('*****')
# print() with no argument writes an empty line.
print()
# A single print() can take several values; they are separated by a space.
print('Kadoos', 'Institute', 'Rasht')
چند خط و چند مقدار: نمونه 02_print_lines.py
* ** *** **** ***** Kadoos Institute Rasht
دو نکته در همین خروجی دیده میشود. اول اینکه print() خالی یک
خط خالی چاپ میکند. دوم اینکه وقتی چند مقدار را با ویرگول به
print میدهید، بینشان خودبهخود یک فاصله میگذارد.
۲. پارامترهای sep و end
آن فاصله بین مقدارها و آن رفتن به خط بعد، هر دو قابل تغییرند. دو پارامتر
برای این کار وجود دارد: sep یعنی جداکننده و end
یعنی چیزی که در پایان چاپ میشود.
# 'sep' changes the separator and 'end' changes what is printed at the end.
print('2026', '09', '08', sep='-')
print('No new line here ->', end=' ')
print('...the next print continues on the same line.')
جداکننده و پایان خط: نمونه 02_print_lines.py
2026-09-08 No new line here -> ...the next print continues on the same line.
شرح مثال
sep='-'یعنی به جای فاصله، بین مقدارها خط تیره بگذار.end=' 'یعنی بعد از چاپ، به جای رفتن به خط بعد، فقط یک فاصله بگذار. برای همین دستور بعدی روی همان خط ادامه پیدا میکند.- مقدار پیشفرض
sepیک فاصله است و مقدار پیشفرضendکاراکتر خط جدید است. اگر ننویسیدشان، همانها به کار میروند.
end='' در فصل هفتم، وقتی بخواهید ستارهها را کنار هم و در یک خط چاپ کنید، حیاتی میشود. در همین مرحله آن را به خاطر بسپارید.
۳. توضیحات
هر چیزی که بعد از علامت # بیاید، پایتون کاملاً نادیده میگیرد.
به این توضیح یا comment میگویند و برای آدمها نوشته
میشود، نه برای کامپیوتر.
# Everything after a '#' on a line is a comment: Python ignores it.
# Comments explain WHY the code does something, not WHAT it does.
print('Hello Kadoos!') # a comment can also sit at the end of a line
# Python has no real multi-line comment, but a triple-quoted string that is not
# assigned to anything is often used for the same purpose.
'''
These three lines are a string that nobody uses,
so in practice they behave like a multi-line comment.
'''
print('The program continues here.')
توضیح یکخطی و چندخطی: نمونه 06_comments.py
شرح مثال
- توضیح میتواند یک خط کامل باشد یا در انتهای یک خط کد بیاید.
- پایتون توضیح چندخطی واقعی ندارد. آنچه در مثال میبینید یک رشته سهگیومهای است که به هیچ متغیری داده نشده، پس عملاً کاری نمیکند.
- در VS Code با
Ctrl + /میتوانید خط جاری را توضیح کنید یا از حالت توضیح در بیاورید.
توضیح بد: # adds one to x در حالی که خط کد
x = x + 1 است. این را خودمان میبینیم. توضیح خوب:
# the counter starts at 1 because the user counts from 1.
یعنی چرا، نه چه.
۴. متغیرها
متغیر یک نام است که به یک مقدار اشاره میکند. مثل برچسبی که روی یک جعبه میچسبانید تا بعداً بدانید داخلش چیست. با علامت مساوی ساخته میشود: سمت چپ نام، سمت راست مقدار.
# A variable is a name that refers to a value.
name = 'Kadoos' # text
age = 18 # whole number
score = 19.5 # number with a decimal part
single = True # True or False
print(name)
print(age)
print(score)
print(single)
# A variable can be re-assigned at any time.
age = 19
print('The new age is:', age)
ساختن و چاپ متغیر: نمونه 03_variables.py
Kadoos 18 19.5 True The new age is: 19
شرح مثال
- علامت
=در اینجا عملگر انتساب است، نه عملگر مقایسه. یعنی مقدار سمت راست را محاسبه کن و آن را به نام سمت چپ نسبت بده. - متغیر همانطور که از نامش پیداست تغییر میکند. خط
age = 19مقدار قبلی را دور میریزد و مقدار تازه را میگذارد. - وقتی نام متغیر را داخل
printمینویسید، بدون گیومه بنویسید. اگر بنویسیدprint('name')خود کلمه name چاپ میشود، نه مقدارش.
print(name) مقدار متغیر را چاپ میکند، یعنی
Kadoos. اما print('name') خود کلمه
name را چاپ میکند. گیومه یعنی «این یک متن ثابت است»،
بدون گیومه یعنی «این نام یک متغیر است».
۵. قوانین نامگذاری
هر نامی مجاز نیست. قوانین اجباری پایتون این موارد هستند:
- فقط حرف انگلیسی، رقم و زیرخط
_. - هرگز با رقم شروع نشود.
2nameغلط است،name2درست است. - فاصله ندارد.
my nameغلط است،my_nameدرست است. - کلمات کلیدی پایتون مانند
ifوforوclassنمیتوانند نام متغیر باشند. - حروف بزرگ و کوچک فرق دارند:
Ageوageدو متغیر متفاوتاند.
و این موارد قانون اجباری نیستند، ولی عرف حرفهایها هستند:
- نام معنادار انتخاب کنید.
student_scoreبهتر ازxاست. - از سبک snake_case استفاده کنید: همه حروف کوچک، کلمات با زیرخط جدا شوند.
- نام توابع آماده پایتون را برای متغیرهایتان به کار نبرید. متغیری به نام
printیاsumیاlistبعداً دردسر میشود. در فصل ششم یک نمونه واقعی از این دردسر میبینید.
۶. چهار نوع داده پایه
هر مقداری در پایتون یک نوع دارد. نوع تعیین میکند چه کارهایی روی آن مقدار مجاز است. چهار نوع پایه که از همین امروز لازمتان میشود این موارد هستند:
# Python has four basic (scalar) data types that we use from day one.
name = 'Kadoos' # str -> text, always inside quotes
age = 18 # int -> integer number
score = 19.5 # float -> decimal number
single = True # bool -> only True or False
print(name, age, score, single)
# Single quotes and double quotes are equivalent in Python.
city = "Rasht"
print(city)
چهار نوع پایه: نمونه 04_data_types.py
| نوع | نام کامل | یعنی چه | نمونه |
|---|---|---|---|
str | string | رشته یا متن، همیشه داخل گیومه | 'Kadoos' |
int | integer | عدد صحیح، بدون اعشار | 18 |
float | floating point | عدد اعشاری | 19.5 |
bool | boolean | فقط دو مقدار: درست یا نادرست | True |
اول: True و False با حرف بزرگ شروع میشوند. true در پایتون وجود ندارد و خطا ایجاد میکند. دوم: 18 و '18' دو چیز کاملاً متفاوتاند. اولی عدد است و میشود با آن حساب کرد، دومی متن است و فقط شکل ظاهریاش عدد است.
۷. تابع type
اگر نمیدانید یک مقدار چه نوعی دارد، از پایتون بپرسید. تابع
type دقیقاً همین کار را میکند.
# type() tells us which data type a value belongs to.
name = 'Kadoos'
age = 18
score = 19.5
single = True
print(type(name)) # <class 'str'>
print(type(age)) # <class 'int'>
print(type(score)) # <class 'float'>
print(type(single)) # <class 'bool'>
پرسیدن نوع یک مقدار: نمونه 05_type_function.py
<class 'str'> <class 'int'> <class 'float'> <class 'bool'>
کلمه class در خروجی فعلاً مهم نیست؛ در فصل بیست و یکم معنایش
را میفهمید. آنچه الان مهم است، کلمه بعد از آن است.
type ابزار اصلی شما برای عیبیابی است: هر وقت برنامه رفتار
عجیبی داشت، اولین کاری که باید بکنید این است که نوع متغیرهایتان را چاپ
کنید.
۸. گرفتن ورودی از کاربر
تا اینجا برنامههای ما هر بار دقیقاً یک کار میکردند. تابع
input است که برنامه را زنده میکند: پیامی نشان میدهد، منتظر
میماند تا کاربر چیزی تایپ کند و اینتر بزند، و بعد آنچه تایپ شده را
برمیگرداند.
# input() shows a message, waits for the user to type something and press Enter,
# then returns whatever was typed AS TEXT (str).
user_input = input('Please enter your name: ')
print(user_input)
print(type(user_input)) # always <class 'str'>
اولین ورودی: نمونه 07_input.py
Please enter your name: Ali Ali <class 'str'>
شرح مثال
- متنی که داخل پرانتز
inputمیگذارید، همان پیامی است که روی صفحه ظاهر میشود. عادت خوبی است که آخرش یک فاصله بگذارید تا تایپ کاربر به علامت دونقطه نچسبد. - برنامه در همان خط متوقف میماند تا کاربر اینتر بزند.
- مهمترین نکته این فصل:
inputهمیشه رشته برمیگرداند. حتی اگر کاربر عدد تایپ کند.
# Reading a value and using it inside a message.
user_input = input('Please enter your name: ')
# print() separates its arguments with a space by default.
print('Welcome', user_input, '!')
# With sep='' there is no space, so the exclamation mark sticks to the name.
print('Welcome ', user_input, '!', sep='')
استفاده از ورودی داخل پیام: نمونه 08_input_welcome.py
Please enter your name: Ali Welcome Ali ! Welcome Ali!
فرق دو خروجی را ببینید. در خط اول، علامت تعجب با یک فاصله از نام جدا شده
است، چون print بین مقدارها فاصله میگذارد. در خط دوم با
sep='' آن فاصله برداشته شده است. در فصل سوم راه تمیزتری برای
همین کار میبینید که نامش f-string است.
۹. تبدیل نوع
حالا به مهمترین مشکل روز اول میرسیم. اگر کاربر عدد ۵ را تایپ کند، آنچه
شما میگیرید عدد ۵ نیست، رشته '5' است. و رشته را نمیشود
جمع زد. راه حل، تبدیل نوع است.
# input() always returns a string, even when the user types digits.
# To calculate with it we must convert (cast) it to a number first.
user_input = input('Enter a number: ')
print('Before conversion:', type(user_input)) # <class 'str'>
number = int(user_input) # str -> int
print('After conversion: ', type(number)) # <class 'int'>
number = number + 2
print('Your number plus 2 is:', number)
# Other useful conversions:
print(float('3.5')) # str -> float
print(int(3.9)) # float -> int (the decimal part is cut off, NOT rounded)
print(str(25)) # int -> str
تبدیل نوع: نمونه 09_type_conversion.py
Enter a number: 7 Before conversion: <class 'str'> After conversion: <class 'int'> Your number plus 2 is: 9 3.5 3 25
شرح مثال
int(x)یعنی «x را به عدد صحیح تبدیل کن»،float(x)یعنی به اعشاری،str(x)یعنی به متن.- به خروجی
int(3.9)دقت کنید: نتیجه ۳ است، نه ۴. تبدیل به عدد صحیح، اعشار را میبُرد و گرد نمیکند. برای گرد کردن، تابعroundهست که در فصل شانزدهم میبینید. - اگر کاربر به جای عدد، متن تایپ کند،
int('hello')خطایValueErrorمیدهد و برنامه میایستد. فعلاً چارهای نداریم؛ در فصل هشتم با حلقه و در فصل نوزدهم باtryجلویش را میگیریم.
اگر تبدیل را فراموش کنید و بنویسید
a = input('a: ') و بعد a + 1، پایتون خطای
TypeError میدهد: نمیشود رشته را با عدد جمع زد. اما بدتر
از آن، اگر هر دو ورودی رشته باشند، '2' + '3' خطا نمیدهد
و نتیجهاش '23' است، چون جمع دو رشته یعنی چسباندنشان به
هم. برنامه اجرا میشود ولی جواب غلط میدهد و این بدترین نوع خطاست.
۱۰. اولین برنامه واقعی
همه چیزهایی که تا اینجا یاد گرفتیم را کنار هم بگذاریم: دو عدد از کاربر بگیریم و مجموعشان را چاپ کنیم.
# First complete mini program: read two numbers and print their sum.
# float() is used instead of int() so the user may also enter 3.5
user_input = input('Enter the first number: ')
num1 = float(user_input)
user_input = input('Enter the second number: ')
num2 = float(user_input)
total = num1 + num2
print('The sum is:', total)
جمع دو عدد: نمونه 10_sum_of_two_numbers.py
Enter the first number: 3.5 Enter the second number: 2 The sum is: 5.5
شرح مثال
- اینجا
floatبه کار رفته نهint، تا کاربر بتواند عدد اعشاری هم وارد کند.floatعدد صحیح را هم قبول میکند. - متغیر
user_inputدو بار استفاده شده است. اشکالی ندارد، چون بعد از تبدیل، مقدارش را درnum1ذخیره کردهایم و دیگر لازمش نداریم. - میشد کوتاهتر نوشت:
num1 = float(input('Enter the first number: ')). هر دو درستاند؛ شکل کوتاهتر رایجتر است ولی شکل دو خطی برای شروع خواناتر است. - ساختار این برنامه، ساختار تقریباً همه برنامههاست: ورودی، سپس پردازش، سپس خروجی.
پوشه S01-first-steps شامل نمونههای
01_hello_world.py تا 10_sum_of_two_numbers.py.
خلاصه فصل
| ابزار | وظیفه آن |
|---|---|
print(x) | چاپ روی صفحه و رفتن به خط بعد |
sep و end | تغییر جداکننده مقدارها و تغییر پایان خط |
# | توضیح. پایتون تا آخر آن خط را نادیده میگیرد |
x = 5 | ساختن متغیر: مقدار سمت راست را در نام سمت چپ بریز |
str int float bool | چهار نوع داده پایه |
type(x) | گفتن نوع یک مقدار |
input(msg) | گرفتن ورودی از کاربر. خروجی همیشه رشته است |
int(x) float(x) str(x) | تبدیل نوع |
تمرینهای فصل یک
- نام، نام خانوادگی و شهر خود را در سه خط جداگانه چاپ کنید.
- متغیرهای
nameوageوcityرا بسازید و در یک جمله چاپشان کنید. - نام کاربر را بگیرید و پیام
Hello <name>, welcome to Kadoos!را چاپ کنید. - دو عدد از کاربر بگیرید و تفاضلشان را چاپ کنید.
- یک عدد از کاربر بگیرید و خود عدد، دو برابرش و سه برابرش را چاپ کنید.
- نوع مقدارهای
'12'و12و12.0وTrueرا چاپ کنید و توضیح دهید فرق'12'با12چیست. - دمای هوا را به سانتیگراد از کاربر بگیرید و به فارنهایت تبدیل و چاپ کنید. فرمول:
F = C * 9 / 5 + 32 - تاریخ امروز را با
sep='/'در یکprintچاپ کنید، به شکل سال و ماه و روز.