در ادامه مباحث آموزش مقدماتی پایتون، در این بلاگ به بررسی عبارتهای شرطی (Conditional Statement) میپردازیم. عبارتهای شرطی در پایتون ابزارهایی قدرتمند برای کنترل جریان اجرای کد هستند. این عبارتها به شما این امکان را میدهند که بر اساس شرایط مختلف تصمیمگیری کنید. در اینجا به توضیح سه عنصر اصلی عبارتهای شرطی میپردازیم: if
، elif
و else
.
- 1. شرط if
- 2. شرط elif
- 3. شرط else
- 4. عبارات شرطی تو در تو
- 5. شرطهای چندگانه در پایتون
- 6. عبارت شرطی یک خطی
- 7. استفاده از ASSERT
- 8. استفاده از عبارات شرطی در لیستها
- 9. عبارتهای match و case
- 10. تمرین برنامهنویسی
-
11.
پرسشهای متداول
- 11.1. عبارت شرطی if در پایتون چه زمانی استفاده میشود و چگونه کار میکند؟
- 11.2. تفاوت بین elif و else چیست و هرکدام چه زمانی استفاده میشوند؟
- 11.3. فرض کنید یک لیست از اعداد صحیح دارید و میخواهید لیستی جدید ایجاد کنید که شامل مربع اعداد فرد و مکعب اعداد زوج باشد. چگونه میتوانید این کار را با استفاده از List Comprehensions انجام دهید؟ مثال بزنید.
- 11.4. عبارت شرطی یک خطی (Ternary Conditional Operator) چیست و چگونه از آن استفاده میشود؟ یک مثال بیاورید.
- 11.5. چگونه میتوان از match و case برای الگویابی (Pattern Matching) در پایتون 3.10 به بعد استفاده کرد؟ یک مثال بیاورید.
- 12. یادگیری تحلیل داده را از امروز شروع کنید!
برای یادگیری زبان برنامهنویسی پایتون، به سری مقالات آموزش پایتون در کافهتدریس مراجعه کنید.
انواع داده در زبان برنامه نویسی پایتون
شرط if
عبارت if
در زبانهای برنامه نویسی برای بررسی اینکه آیا یک شرط خاص درست است یا خیر استفاده میشود. اگر شرط درست باشد، کد داخل بلوک if
اجرا میشود. به عنوان مثال:
temperature = 30
if temperature > 25:
print("It's a hot day.")
در این مثال، اگر مقدار متغیر temperature
بیشتر از ۲۵ باشد، پیام "It's a hot day."
چاپ میشود.
شرط elif
عبارت elif
، که مخفف “else if” است، برای بررسی شرایط اضافی بعد از شرط if
استفاده میشود. اگر شرط if
نادرست باشد، برنامه به شرط elif
میرسد و آن را بررسی میکند. شما میتوانید چندین شرط elif
داشته باشید. به عنوان مثال:
temperature = 20
if temperature > 25:
print("It's a hot day.")
elif temperature > 15:
print("It's a warm day.")
در این مثال، اگر شرط if
نادرست باشد (یعنی دما کمتر یا مساوی ۲۵ باشد)، شرط elif
بررسی میشود. اگر دما بیشتر از ۱۵ باشد، پیام "It's a warm day."
چاپ میشود.
شرط else
عبارت else
برای زمانی استفاده میشود که هیچیک از شرایط if
یا elif
درست نباشند. آنگاه کد داخل بلوک else
اجرا میشود. به عنوان مثال:
temperature = 10
if temperature > 25:
print("It's a hot day.")
elif temperature > 15:
print("It's a warm day.")
else:
print("It's a cold day.")
در این مثال، اگر هیچیک از شرایط if
یا elif
درست نباشند (یعنی دما کمتر یا مساوی ۱۵ باشد)، پیام "It's a cold day."
چاپ میشود.
با استفاده از این سه عنصر (if
، elif
و else
) میتوانید منطق پیچیدهای را در برنامههای خود پیادهسازی کرده و تصمیمگیریهای مختلفی را بر اساس شرایط گوناگون انجام دهید.
عبارات شرطی تو در تو
عبارات شرطی تو در تو (Nested Conditions) در پایتون به شما این امکان را میدهند که شرایط پیچیدهتری را بررسی کنید. در این نوع عبارات شرطی، یک عبارت شرطی میتواند در داخل یک عبارت شرطی دیگر قرار گیرد. این به شما این امکان را میدهد که چندین شرط را به طور سلسله مراتبی بررسی کنید.
در ادامه، نحوه استفاده از شرطهای تو در تو را با یک مثال توضیح میدهیم:
فرض کنید میخواهید یک برنامه بنویسید که براساس دمای هوا و وضعیت آفتاب، پیام مناسب را چاپ کند. در اینجا از شرطهای تو در تو استفاده میکنیم:
temperature = 18
is_sunny = True
if temperature > 25:
if is_sunny:
print("It's a hot and sunny day.")
else:
print("It's a hot day but not sunny.")
elif temperature > 15:
if is_sunny:
print("It's a warm and sunny day.")
else:
print("It's a warm day but not sunny.")
else:
if is_sunny:
print("It's a cold but sunny day.")
else:
print("It's a cold day and not sunny.")
در این مثال، ابتدا شرط اول بررسی میشود که آیا دما بیشتر از ۲۵ است یا خیر. اگر این شرط درست باشد، سپس یک شرط دیگر بررسی میشود که آیا هوا آفتابی است یا خیر. اگر هر دو شرط درست باشند، پیام "It's a hot and sunny day."
چاپ میشود. در غیر این صورت، پیام "It's a hot day but not sunny."
چاپ میشود. این روند برای سایر شرایط نیز به همین ترتیب ادامه مییابد.
این نوع عبارات شرطی به شما این امکان را میدهند که شرایط پیچیدهتر و چندگانه را به صورت سازمانیافته و منطقی بررسی کنید.
شرطهای چندگانه در پایتون
عبارات شرطی چندگانه (Multiple Conditions) در پایتون به شما این امکان را میدهند که چندین شرط را با استفاده از عملگرهای منطقی مانند and
، or
و not
ترکیب کنید. این کار به شما این اجازه را میدهد که بر اساس چندین شرط همزمان تصمیمگیری کنید. در اینجا چند مثال برای درک بهتر این مفهوم آورده شده است.
استفاده از عملگر and
عملگر and
برای بررسی این که آیا هر دو شرط درست هستند یا خیر استفاده میشود. تنها در صورتی که هر دو شرط درست باشند، عبارت شرطی درست خواهد بود.
age = 20
has_ticket = True
if age >= 18 and has_ticket:
print("You can enter the concert.")
else:
print("You cannot enter the concert.")
در این مثال، شرط تنها در صورتی درست است که هر دو شرط age >= 18
و has_ticket
درست باشند. اگر هر دو شرط درست باشند، پیام "You can enter the concert."
چاپ میشود. در غیر این صورت، پیام "You cannot enter the concert."
چاپ میشود.
استفاده از عملگر or
عملگر or
برای بررسی این که آیا حداقل یکی از شرطها درست است استفاده میشود. اگر یکی از شرطها یا هر دو شرط درست باشند، عبارت شرطی درست خواهد بود.
مثال:
day = "Saturday"
is_holiday = True
if day == "Saturday" or day == "Sunday" or is_holiday:
print("You can relax today.")
else:
print("You have to go to work.")
در این مثال، شرط درست خواهد بود اگر day
برابر با "Saturday"
یا "Sunday"
باشد یا اگر is_holiday
درست باشد. اگر هر یک از این شرایط درست باشند، پیام "You can relax today."
چاپ میشود. در غیر این صورت، پیام "You have to go to work."
چاپ میشود.
استفاده از عملگر not
عملگر not
برای معکوس کردن نتیجه یک شرط استفاده میشود. اگر شرطی درست باشد، استفاده از not
آن را نادرست میکند و برعکس.
is_raining = False
if not is_raining:
print("You can go for a walk.")
else:
print("You need an umbrella.")
در این مثال، اگر is_raining
نادرست باشد (یعنی باران نبارد)، پیام "You can go for a walk."
چاپ میشود. در غیر این صورت، پیام "You need an umbrella."
چاپ میشود.
ترکیب چندین شرط
میتوانید چندین شرط را با استفاده از عملگرهای منطقی ترکیب کنید تا شرایط پیچیدهتری را بررسی کنید.
مثال:
age = 25
is_student = False
has_discount_coupon = True
if (age < 18 or is_student) and has_discount_coupon:
print("You get a discount.")
else:
print("You do not get a discount.")
ر این مثال، شرط درست خواهد بود اگر یکی از شرایط age < 18
یا is_student
درست باشد و همچنین has_discount_coupon
درست باشد. اگر این ترکیب شرایط درست باشد، پیام "You get a discount."
چاپ میشود. در غیر این صورت، پیام "You do not get a discount."
چاپ میشود.
با استفاده از این عملگرهای منطقی میتوانید شرایط چندگانه را به صورت انعطافپذیر و پیچیده در برنامههای خود پیادهسازی کنید.
عبارت شرطی یک خطی
عبارت شرطی یک خطی (Ternary Conditional Operator) در پایتون به شما اجازه میدهد تا شرطها را به صورت مختصر و در یک خط کد بنویسید. این روش برای زمانی مفید است که نیاز به یک تخصیص یا خروجی سریع و ساده دارید. فرم کلی عبارت شرطی یک خطی به صورت زیر است:
value_if_true if condition else value_if_false
در این ساختار، اگر شرط درست باشد، مقدار value_if_true
بازگردانده میشود. در غیر این صورت، مقدار value_if_false
بازگردانده میشود. در ادامه چند مثال برای درک بهتر این مفهوم آورده شده است.
تخصیص مقدار به متغیر
فرض کنید میخواهید بر اساس سن یک فرد، پیام مناسب را تعیین کنید:
age = 20
message = "Adult" if age >= 18 else "Minor"
print(message)
در این مثال، اگر مقدار age
بیشتر یا برابر با 18 باشد، متغیر message
به "Adult"
تخصیص داده میشود. در غیر این صورت، مقدار آن "Minor"
خواهد بود. خروجی این کد "Adult"
است.
محاسبه مقدار و چاپ نتیجه
فرض کنید میخواهید بر اساس دمای هوا تصمیم بگیرید که پیام مناسب را چاپ کنید:
temperature = 30
print("Hot day" if temperature > 25 else "Not a hot day")
ر این مثال، اگر مقدار temperature
بیشتر از 25 باشد، پیام "Hot day"
چاپ میشود. در غیر این صورت، پیام "Not a hot day"
چاپ میشود. خروجی این کد "Hot day"
است.
استفاده در توابع
فرض کنید میخواهید یک تابع بنویسید که بر اساس ورودی عددی، تصمیم بگیرد که آیا عدد زوج است یا فرد:
def check_even_or_odd(number):
return "Even" if number % 2 == 0 else "Odd"
result = check_even_or_odd(5)
print(result)
ر این مثال، تابع check_even_or_odd
بر اساس عدد ورودی تصمیم میگیرد که "Even"
یا "Odd"
را برگرداند. برای ورودی 5، خروجی "Odd"
خواهد بود.
استفاده در لیستهای ترکیبی
میتوانید از عبارت شرطی یک خطی در لیستهای ترکیبی نیز استفاده کنید:
numbers = [1, 2, 3, 4, 5]
result = ["Even" if num % 2 == 0 else "Odd" for num in numbers]
print(result)
در این مثال، برای هر عدد در لیست numbers
بررسی میشود که آیا زوج است یا فرد و نتیجه به صورت لیستی از رشتهها ("Even"
یا "Odd"
) بازگردانده میشود. خروجی این کد ['Odd', 'Even', 'Odd', 'Even', 'Odd']
است.
عبارت شرطی یک خطی (Ternary Conditional Operator) به شما این امکان را میدهد که کدهای ساده و خوانایی بنویسید و در عین حال، تصمیمگیریهای شرطی را به صورت مختصر و کارآمد انجام دهید.
استفاده از ASSERT
عبارت assert
در پایتون برای بررسی شرطها و اعتبارسنجی استفاده میشود. زمانی که از assert
استفاده میکنید، برنامه بررسی میکند که آیا شرط مورد نظر درست است یا خیر. اگر شرط نادرست باشد، برنامه با یک خطای AssertionError
متوقف میشود. این ابزار برای اشکالزدایی و اطمینان از صحت کد بسیار مفید است.
فرم کلی استفاده از assert
به صورت زیر است:
assert condition, "Error message if condition is false"
در اینجا، اگر condition
نادرست باشد، برنامه متوقف میشود و پیام خطا چاپ میشود.
بررسی یک شرط ساده
فرض کنید میخواهید اطمینان حاصل کنید که مقدار متغیر x
مثبت است:
x = 10
assert x > 0, "x must be positive"
print("x is positive")
در این مثال، اگر مقدار x
بزرگتر از 0 باشد، برنامه بدون خطا اجرا میشود و پیام "x is positive"
چاپ میشود. اما اگر مقدار x
منفی یا صفر باشد، برنامه با خطای AssertionError
و پیام "x must be positive"
متوقف میشود.
استفاده از عبارات شرطی در لیستها
عبارات شرطی در لیستها (List Comprehensions) به شما این امکان را میدهند که لیستهای جدیدی را به سادگی و با استفاده از یک عبارت شرطی ایجاد کنید. این روش باعث میشود کد شما مختصرتر و خواناتر شود. لیست ترکیبی به صورت زیر است:
[expression for item in iterable if condition]
در اینجا، expression
عبارتی است که برای هر آیتم در iterable
ارزیابی میشود، اما فقط اگر condition
درست باشد.
فیلتر کردن لیست اعداد زوج
فرض کنید یک لیست از اعداد دارید و میخواهید تنها اعداد زوج را از آن استخراج کنید:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) # خروجی: [2, 4, 6, 8, 10]
در این مثال، لیست even_numbers
شامل اعدادی از لیست numbers
است که شرط num % 2 == 0
را برآورده میکنند، یعنی اعداد زوج.
فیلتر کردن و تغییر مقادیر همزمان
فرض کنید میخواهید لیستی از اعداد را به اعداد زوج مربع کرده و اعداد فرد را حذف کنید:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
squared_evens = [num ** 2 for num in numbers if num % 2 == 0]
print(squared_evens) # خروجی: [4, 16, 36, 64, 100]
در این مثال، لیست squared_evens
شامل مربع اعداد زوج از لیست numbers
است.
استفاده از عبارات شرطی چندگانه
فرض کنید میخواهید لیستی از اعداد را ایجاد کنید که تنها شامل اعداد بین 5 و 15 باشد:
numbers = range(20)
filtered_numbers = [num for num in numbers if num > 5 and num < 15]
print(filtered_numbers) # خروجی: [6, 7, 8, 9, 10, 11, 12, 13, 14]
در این مثال، لیست filtered_numbers
شامل اعدادی از لیست numbers
است که شرطهای num > 5
و num < 15
را برآورده میکنند.جایگزینی مقادیر با عبارت شرطی
فرض کنید میخواهید اعداد زوج را به "Even"
و اعداد فرد را به "Odd"
تبدیل کنید:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_or_odd = ["Even" if num % 2 == 0 else "Odd" for num in numbers]
print(even_or_odd) # خروجی: ['Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even']
در این مثال، لیست even_or_odd
شامل رشتههایی است که بر اساس زوج یا فرد بودن اعداد در لیست numbers
تولید شدهاند.
استفاده از چند حلقه تو در تو با شرط
فرض کنید میخواهید ضرب مقادیر دو لیست را تنها در صورتی که مقادیر زوج باشند محاسبه کنید:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
product_list = [a * b for a in list1 for b in list2 if a % 2 == 0 and b % 2 == 0]
print(product_list) # خروجی: [8, 12]
در این مثال، product_list
شامل حاصلضرب مقادیر زوج از list1
و list2
است.
عبارات شرطی در لیستها (List Comprehensions) به شما این امکان را میدهند که با کد مختصر و خوانایی بالا، لیستهای جدیدی ایجاد کنید که شامل مقادیر فیلتر شده و یا تغییر یافته هستند. این روش میتواند کد شما را سادهتر و کارآمدتر کند.
عبارتهای match و case
عبارتهای match
و case
برای الگویابی (Pattern Matching) در پایتون 3.10 معرفی شدهاند و به شما این امکان را میدهند که ساختارهای پیچیدهتری را با استفاده از نحو سادهتر و قابل خواندنتر بررسی کنید. این ابزار جدید مشابه ساختار switch
در برخی زبانهای برنامهنویسی دیگر است اما با امکانات بیشتری برای الگویابی.
ساختار کلی استفاده از match
و case
به صورت زیر است:
match variable:
case pattern1:
# do something
case pattern2:
# do something else
case _:
# default case
در این ساختار، variable
مقداری است که میخواهید الگویابی کنید و هر case
یک الگوی خاص است که میتواند شامل مقادیر ثابت، متغیرها، یا ساختارهای پیچیدهتر باشد.
الگویابی مقادیر ثابت
در این مثال، بررسی میکنیم که مقدار یک متغیر با یکی از مقادیر ثابت مطابقت دارد یا خیر:
status = 404
match status:
case 200:
print("OK")
case 404:
print("Not Found")
case 500:
print("Internal Server Error")
case _:
print("Unknown status")
در این مثال، مقدار status
با مقادیر ثابت مقایسه میشود و در صورت تطابق، پیام مناسب چاپ میشود. در اینجا، خروجی "Not Found"
خواهد بود زیرا مقدار status
برابر با 404 است.
تمرین برنامهنویسی
برای درک بهتر و تسلط بیشتر به مفاهیم عبارات شرطی در پایتون، برنامه زیر را در نظر بگیرید:
برنامهای بنویسید که یک عدد را از ورودی بگیرد و نام روز هفته متناظر با آن را چاپ کند.
برای تمرین بهتر مطالب عبارات شرطی، این برنامه را با دو روش مینویسیم:
- با استفاده از شرطهای تو در تو (
nested if
) - با استفاده از
match
وcase
حل تمرین با استفاده از if
تو در تو
def get_day_name_if(day_number):
if day_number == 1:
return "Sunday"
elif day_number == 2:
return "Monday"
elif day_number == 3:
return "Tuesday"
elif day_number == 4:
return "Wednesday"
elif day_number == 5:
return "Thursday"
elif day_number == 6:
return "Friday"
elif day_number == 7:
return "Saturday"
else:
return "Invalid day number"
# تست کردن تابع
day_number = 3
print(get_day_name_if(day_number)) # خروجی: Tuesday
حل تمرین با استفاده از match
و case
این روش در پایتون 3.10 به بعد قابل استفاده است:
def get_day_name_match(day_number):
match day_number:
case 1:
return "Sunday"
case 2:
return "Monday"
case 3:
return "Tuesday"
case 4:
return "Wednesday"
case 5:
return "Thursday"
case 6:
return "Friday"
case 7:
return "Saturday"
case _:
return "Invalid day number"
# تست کردن تابع
day_number = 3
print(get_day_name_match(day_number)) # خروجی: Tuesday
در این دو روش، بر اساس مقدار ورودی day_number
، نام روز هفته برگردانده میشود. در روش اول از شرطهای تو در تو (nested if
) استفاده شده و در روش دوم از الگویابی با match
و case
. هر دو روش نتیجه یکسانی دارند، اما روش match
و case
در پایتون 3.10 به بعد معرفی شده و کد را خواناتر و قابل نگهداریتر میکند.
پرسشهای متداول
عبارت شرطی if
در پایتون چه زمانی استفاده میشود و چگونه کار میکند؟
عبارت if
در پایتون برای بررسی اینکه آیا یک شرط خاص درست است یا خیر استفاده میشود. اگر شرط درست باشد، کد داخل بلوک if
اجرا میشود.
تفاوت بین elif
و else
چیست و هرکدام چه زمانی استفاده میشوند؟
عبارت elif
، که مخفف “else if” است، برای بررسی شرایط اضافی بعد از شرط if
استفاده میشود. اگر شرط if
نادرست باشد، برنامه به شرط elif
میرسد و آن را بررسی میکند. شما میتوانید چندین شرط elif
داشته باشید. عبارت else
برای زمانی استفاده میشود که هیچیک از شرایط if
یا elif
درست نباشند. کد داخل بلوک else
در هر صورت اجرا میشود.
فرض کنید یک لیست از اعداد صحیح دارید و میخواهید لیستی جدید ایجاد کنید که شامل مربع اعداد فرد و مکعب اعداد زوج باشد. چگونه میتوانید این کار را با استفاده از List Comprehensions انجام دهید؟ مثال بزنید.
برای انجام این کار با استفاده از List Comprehensions، میتوانید به صورت زیر عمل کنید:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = [num ** 2 if num % 2 != 0 else num ** 3 for num in numbers]
print(result)
در این مثال، برای هر عدد در لیست numbers
بررسی میشود که آیا فرد است یا زوج. اگر عدد فرد باشد، مربع آن (num ** 2
) محاسبه و به لیست result
اضافه میشود. اگر عدد زوج باشد، مکعب آن (num ** 3
) محاسبه و به لیست result
اضافه میشود.
خروجی این کد به صورت زیر خواهد بود:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = [num ** 2 if num % 2 != 0 else num ** 3 for num in numbers]
print(result) # خروجی: [1, 8, 9, 64, 25, 216, 49, 512, 81, 1000]
در این خروجی، مربع اعداد فرد و مکعب اعداد زوج مطابق با شرط داده شده در List Comprehension تولید شده است.
عبارت شرطی یک خطی (Ternary Conditional Operator) چیست و چگونه از آن استفاده میشود؟ یک مثال بیاورید.
عبارت شرطی یک خطی (Ternary Conditional Operator) در پایتون به شما اجازه میدهد تا شرطها را به صورت مختصر و در یک خط کد بنویسید. فرم کلی آن به صورت زیر است:
value_if_true if condition else value_if_false
در این ساختار، اگر شرط درست باشد، مقدار value_if_true
بازگردانده میشود. در غیر این صورت، مقدار value_if_false
بازگردانده میشود.
مثال:
age = 20
message = "Adult" if age >= 18 else "Minor"
print(message)
در این مثال، اگر مقدار age
بیشتر یا برابر با 18 باشد، متغیر message
به "Adult"
تخصیص داده میشود. در غیر این صورت، مقدار آن "Minor"
خواهد بود. خروجی این کد "Adult"
است.
چگونه میتوان از match
و case
برای الگویابی (Pattern Matching) در پایتون 3.10 به بعد استفاده کرد؟ یک مثال بیاورید.
عبارتهای match
و case
برای الگویابی (Pattern Matching) در پایتون 3.10 معرفی شدهاند و به شما این امکان را میدهند که ساختارهای پیچیدهتری را با استفاده از نحو سادهتر و قابل خواندنتر بررسی کنید. ساختار کلی استفاده از match
و case
به صورت زیر است:
match variable:
case pattern1:
# do something
case pattern2:
# do something else
case _:
# default case
در این ساختار، variable
مقداری است که میخواهید الگویابی کنید و هر case
یک الگوی خاص است که میتواند شامل مقادیر ثابت، متغیرها، یا ساختارهای پیچیدهتر باشد.
status = 404
match status:
case 200:
print("OK")
case 404:
print("Not Found")
case 500:
print("Internal Server Error")
case _:
print("Unknown status")
در این مثال، مقدار status
با مقادیر ثابت مقایسه میشود و در صورت تطابق، پیام مناسب چاپ میشود. در اینجا، خروجی "Not Found"
خواهد بود زیرا مقدار status
برابر با 404 است.
یادگیری تحلیل داده را از امروز شروع کنید!
دنیای دادهها جذاب است و دانستن علم داده، توانایی تحلیل داده، یا بازاریابی مبتنی بر داده، شما را برای فرصتهای شغلی بسیاری مناسب میکند. فارغ از رشته و پیشزمینه، میتوانید حالا شروع کنید و از سطح مقدماتی تا پیشرفته بیاموزید. اگر دوست دارید به این حوزه وارد شوید، پیشنهاد میکنیم با کلیک روی این لینک قدم اول را همین حالا بردارید. مشاوران کافهتدریس به شما کمک میکنند مسیر یادگیری برای ورود به این حوزه را شروع کنید.