Python Coding Academy
135 subscribers
7 photos
3 files
4 links
🐍 Learn Python. Build Skills. Create the Future.

📚 Python lessons from beginner to advanced
💻 Clear explanations & real-world examples
🚀 Learn to code. Learn to build.
Download Telegram
🐍 آموزش جامع Python — پست ۵۲
ترکیب شرط‌های تو در تو با and و or
گاهی داخل یک شرط تو در تو، چند شرط را با and یا or ترکیب می‌کنیم.
🔹 مثال با and
age = 20
has_id = True
is_member = True

if age >= 18:
if has_id and is_member:
print("Access granted")

اینجا هر دو شرط داخلی باید درست باشند.
🔹 مثال با or
is_admin = False
is_manager = True

if is_admin or is_manager:
print("Access granted")

کافی است یکی از شرط‌ها درست باشد.
🔹 ترکیب با پرانتز ()
پرانتز برای مشخص کردن اولویت بررسی شرط‌ها استفاده می‌شود.
مثلاً:
age = 20
has_id = True
is_member = False

if age >= 18 and (has_id or is_member):
print("Access granted")

ابتدا این بخش بررسی می‌شود:
has_id or is_member
True or False → True

سپس:
age >= 18 and True
True and True → True

پس خروجی:
Access granted

بدون پرانتز هم در این مثال نتیجه یکسان است، اما پرانتز منطق شرط را واضح‌تر می‌کند.
⚠️ نکته مهم
در شرط‌های ترکیبی، پرانتز می‌تواند نتیجه را تغییر دهد:
A or (B and C)

با:
(A or B) and C

الزاماً یکسان نیستند.
🧠 خلاصه
()    → مشخص کردن اولویت
and → همه شرط‌های مربوط باید True باشند
or → حداقل یکی از شرط‌ها باید True باشد

🎯 تمرین
خروجی را حدس بزن:
a = True
b = False
c = True

result = a and (b or c)

print(result)

پست ۵۲ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۳
تفاوت شرط تو در تو و شرط ترکیبی
دو روش رایج برای بررسی چند شرط داریم:
شرط تو در تو (Nested if)
شرط ترکیبی با and و or
🔹 شرط تو در تو
age = 20
has_id = True

if age >= 18:
if has_id:
print("Access granted")

ابتدا شرط سن بررسی می‌شود؛ سپس شرط کارت شناسایی.
🔹 شرط ترکیبی
همین منطق را می‌توان کوتاه‌تر نوشت:
age = 20
has_id = True

if age >= 18 and has_id:
print("Access granted")

در اینجا هر دو شرط باید True باشند.
🔹 چه زمانی از کدام استفاده کنیم؟
اگر شرط‌ها ساده و مستقل هستند:
if age >= 18 and has_id:
print("Access granted")

خواناتر است.
اما اگر شرط دوم فقط در صورت برقرار بودن شرط اول معنا داشته باشد، Nested if می‌تواند مناسب‌تر باشد:
if age >= 18:
if has_id:
print("Access granted")

⚠️ نکته
هر دو روش همیشه از نظر منطقی کاملاً معادل نیستند؛ مخصوصاً وقتی داخل شرط‌ها کد اجرایی یا وابستگی منطقی وجود داشته باشد.
پس فقط برای کوتاه‌تر شدن، همه شرط‌های تو در تو را به and تبدیل نکنید.
🧠 خلاصه
Nested if       → شرط داخل شرط
and / or → ترکیب چند شرط

🎯 تمرین
کدام روش را برای این مسئله انتخاب می‌کنی؟
«اگر کاربر وارد حساب شده بود، بررسی کن که مدیر است یا نه.»
پست ۵۳ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۴
بررسی چند حالت با elif
وقتی یک مقدار می‌تواند چند حالت مختلف داشته باشد، از elif استفاده می‌کنیم.
🔹 مثال
score = 85

if score >= 90:
print("Excellent")
elif score >= 70:
print("Good")
elif score >= 50:
print("Passed")
else:
print("Failed")

خروجی:
Good

Python شرط‌ها را از بالا به پایین بررسی می‌کند.
به محض اینکه یک شرط True شود، همان بخش اجرا می‌شود و بقیه شرط‌ها بررسی نمی‌شوند.
🔹 ترتیب شرط‌ها مهم است
مثلاً این کد مشکل دارد:
score = 95

if score >= 50:
print("Passed")
elif score >= 90:
print("Excellent")

خروجی:
Passed

چون شرط اول از قبل True شده است و Python دیگر به elif نمی‌رسد.
پس معمولاً شرط‌های محدودتر و دقیق‌تر را بالاتر قرار می‌دهیم.
🧠 خلاصه
if    → اولین شرط
elif → شرط‌های بعدی
else → اگر هیچ‌کدام درست نبود

🎯 تمرین
کد را طوری بنویس که:
90 به بالا → Excellent
70 تا 89 → Good
50 تا 69 → Passed
کمتر از 50 → Failed

پست ۵۴ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۵
تعیین محدوده با if و elif
با if و elif می‌توانیم یک مقدار را در چند محدوده بررسی کنیم.
🔹 مثال با نمره
score = 85

if 90 <= score <= 100:
print("Excellent")
elif 70 <= score < 90:
print("Good")
elif 50 <= score < 70:
print("Passed")
else:
print("Failed")

خروجی:
Good

🔹 مقایسه زنجیره‌ای
در Python می‌توانیم بنویسیم:
70 <= score < 90

این یعنی:
70 <= score and score < 90

پس لازم نیست همیشه and را جداگانه بنویسیم.
⚠️ نکته مهم
به مرزها دقت کنید:
90 <= score <= 100
70 <= score < 90
50 <= score < 70

در این حالت هیچ عددی بین دو محدوده تکراری نیست.
🔹 مثال دیگر
age = 25

if 0 <= age < 13:
print("Child")
elif 13 <= age < 18:
print("Teenager")
elif age >= 18:
print("Adult")
else:
print("Invalid age")

🧠 خلاصه
if / elif → بررسی چند حالت
<= → شامل مرز است
< → مرز را شامل نمی‌شود

🎯 تمرین
شرط‌ها را طوری بنویس که:
0 تا 12  → Child
13 تا 17 → Teenager
18 تا 59 → Adult
60 به بالا → Senior

پست ۵۵ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۶
اعتبارسنجی ورودی با if و elif
در این پست از شرط‌ها برای بررسی معتبر بودن ورودی کاربر استفاده می‌کنیم.
🔹 مثال
age = int(input("Enter your age: "))

if age < 0:
print("Invalid age")
elif age < 18:
print("Minor")
else:
print("Adult")

اگر -5 وارد شود:
Invalid age

اگر 15 وارد شود:
Minor

اگر 25 وارد شود:
Adult

⚠️ نکته مهم
ترتیب شرط‌ها مهم است.
ابتدا حالت نامعتبر را بررسی می‌کنیم، سپس حالت‌های معتبر.
🧠 خلاصه
if   → شرط اول
elif → شرط‌های بعدی
else → هیچ شرطی درست نبود

🎯 تمرین
برنامه‌ای بنویسید که یک عدد دریافت کند:
کمتر از 0    → Negative
0 تا 100 → Valid
بیشتر از 100 → Invalid

پست ۵۶ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۷
ترکیب چند شرط برای اعتبارسنجی
گاهی برای معتبر بودن یک مقدار، باید چند شرط هم‌زمان برقرار باشند.
🔹 مثال
age = 25
has_id = True

if age >= 18 and has_id:
print("Access granted")
else:
print("Access denied")

در اینجا هر دو شرط باید True باشند:
age >= 18 → True
has_id → True

پس:
True and True → True

🔹 استفاده از or
اگر کافی باشد یکی از شرط‌ها درست باشد:
username = "admin"

if username == "admin" or username == "root":
print("Privileged user")
else:
print("Normal user")

⚠️ نکته مهم
برای ترکیب شرط‌های پیچیده، از پرانتز استفاده کنید:
if age >= 18 and (has_id or username == "admin"):
print("Access granted")

ابتدا:
has_id or username == "admin"

بررسی می‌شود.
🧠 خلاصه
and → همه شرط‌ها باید True باشند
or → حداقل یکی باید True باشد
() → تعیین ترتیب بررسی

🎯 تمرین
کدی بنویسید که اگر:
سن حداقل 18 باشد
و
کاربر عضو باشد یا مدیر باشد

پیام Access granted را چاپ کند.
پست ۵۷ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۸
اعتبارسنجی چند مقدار با شرط‌ها
گاهی لازم است چند مقدار را هم‌زمان بررسی کنیم.
🔹 مثال
username = "Ali"
age = 20

if username and age >= 18:
print("Valid user")
else:
print("Invalid user")

در اینجا:
username → باید خالی نباشد
age → باید حداقل 18 باشد

چون هر دو شرط درست هستند، خروجی:
Valid user

🔹 چند حالت مختلف
score = 85

if score < 0 or score > 100:
print("Invalid score")
elif score >= 50:
print("Passed")
else:
print("Failed")

ابتدا بررسی می‌کنیم نمره خارج از محدوده 0 تا 100 نباشد.
⚠️ نکته مهم
در اعتبارسنجی، معمولاً بهتر است ابتدا مقادیر نامعتبر را بررسی کنیم و بعد سراغ حالت‌های معتبر برویم.
🧠 خلاصه
and → همه شرایط باید درست باشند
or → حداقل یک شرط باید درست باشد
if / elif / else → مدیریت حالت‌های مختلف

🎯 تمرین
برنامه‌ای بنویسید که score را بررسی کند:
کمتر از 0 یا بیشتر از 100 → Invalid
50 تا 100 → Passed
کمتر از 50 → Failed

پست ۵۸ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۹
ترکیب چند مقایسه در یک شرط
در Python می‌توانیم چند مقایسه را در یک شرط ترکیب کنیم.
🔹 مثال
age = 25

if 18 <= age <= 60:
print("Valid age")

اینجا Python بررسی می‌کند:
18 <= age
age <= 60

هر دو باید درست باشند.
🔹 با and
همین شرط را می‌توانیم این‌طور بنویسیم:
if age >= 18 and age <= 60:
print("Valid age")

🔹 مثال با نمره
score = 85

if 0 <= score <= 100:
print("Valid score")
else:
print("Invalid score")

⚠️ نکته مهم
مقایسه زنجیره‌ای:
0 <= score <= 100

از نظر منطقی معادل است با:
0 <= score and score <= 100

این ویژگی مخصوص Python است و خوانایی کد را بهتر می‌کند.
🧠 خلاصه
a <= x <= b

یعنی:
a <= x and x <= b

🎯 تمرین
شرطی بنویسید که بررسی کند temperature بین -10 و 40 باشد.
پست ۵۹ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۰
استفاده از not برای معکوس کردن شرط
با not می‌توانیم نتیجه یک شرط را معکوس کنیم.
🔹 مثال ساده
is_admin = False

if not is_admin:
print("Access denied")

چون:
is_admin → False
not False → True

پس شرط اجرا می‌شود.
🔹 مثال با مقایسه
age = 15

if not age >= 18:
print("You are a minor")

ابتدا:
age >= 18 → False
not False → True

🔹 not با پرانتز
می‌توانیم چند شرط را داخل پرانتز قرار دهیم و نتیجه کلی را معکوس کنیم:
age = 20
has_id = True

if not (age >= 18 and has_id):
print("Access denied")
else:
print("Access granted")

ابتدا:
age >= 18 and has_id
True and True → True

سپس:
not True → False

بنابراین else اجرا می‌شود.
🔹 ترکیب با and
is_logged_in = True
is_admin = False

if is_logged_in and not is_admin:
print("Normal user")

هر دو بخش شرط باید درست باشند.
⚠️ نکته مهم
پرانتز مشخص می‌کند not دقیقاً روی کدام عبارت اعمال شود:
not (A and B)

یعنی نتیجه کل (A and B) معکوس شود.
🧠 خلاصه
not True  → False
not False → True
not (A and B) → معکوس نتیجه A and B

🎯 تمرین
age = 16
has_id = True

if not (age >= 18 and has_id):
print("Access denied")
else:
print("Access granted")

خروجی را پیش‌بینی کنید.
پست ۶۰ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۱
ترکیب not با and و or
در پست قبل با not آشنا شدیم.
حالا می‌توانیم not را همراه با and و or استفاده کنیم.
🔹 مثال با and
age = 20
has_id = False

if age >= 18 and not has_id:
print("ID is required")

اینجا:
age >= 18 → True
has_id → False
not False → True

پس:
True and True → True

🔹 مثال با or
username = "guest"

if not (username == "admin" or username == "root"):
print("Normal user")

ابتدا داخل پرانتز بررسی می‌شود:
username == "admin" → False
username == "root" → False

False or False → False

سپس:
not False → True

پس پیام Normal user چاپ می‌شود.
⚠️ نکته مهم
پرانتز در این نوع شرط‌ها بسیار مهم است:
not (A or B)

یعنی ابتدا A or B محاسبه شود و سپس نتیجه آن با not معکوس شود.
🧠 خلاصه
not (A and B) → معکوس نتیجه A and B
not (A or B) → معکوس نتیجه A or B

🎯 تمرین
خروجی کد زیر را قبل از اجرا پیش‌بینی کنید:
is_logged_in = True
is_banned = False

if is_logged_in and not is_banned:
print("Access granted")
else:
print("Access denied")

پست ۶۱ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۲
اولویت not در ترکیب شرط‌ها
وقتی not را همراه با and و or استفاده می‌کنیم، ترتیب بررسی شرط‌ها اهمیت دارد.
🔹 ترتیب بررسی
در شرط‌هایی که تا اینجا یاد گرفتیم:
()
not
and
or

یعنی not قبل از and و or بررسی می‌شود.
🔹 مثال
a = True
b = False

result = not a or b
print(result)

ابتدا:
not a
not True → False

سپس:
False or False → False

پس خروجی:
False

🔹 استفاده از پرانتز
پرانتز می‌تواند ترتیب را تغییر دهد:
result = not (a or b)
print(result)

ابتدا:
a or b
True or False → True

سپس:
not True → False

⚠️ نکته مهم
این دو عبارت همیشه یک شکل نوشته نمی‌شوند:
not a or b

و:
not (a or b)

پرانتز مشخص می‌کند not روی کدام بخش اعمال شود.
🧠 خلاصه
()    → اول
not → بعد
and → سپس
or → در آخر

اگر شرط پیچیده شد، برای خوانایی از () استفاده کنید.
🎯 تمرین
خروجی هر دو عبارت را قبل از اجرا پیش‌بینی کنید:
a = True
b = False

print(not a or b)
print(not (a or b))

پست ۶۲ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۳
ترکیب چند شرط با if و elif
گاهی یک مقدار می‌تواند در چند حالت مختلف قرار بگیرد. در این شرایط از if و چند elif استفاده می‌کنیم.
🔹 مثال
score = 82

if score >= 90:
print("Excellent")
elif score >= 75:
print("Good")
elif score >= 50:
print("Passed")
else:
print("Failed")

خروجی:
Good

چون:
82 >= 90 → False
82 >= 75 → True

به محض اینکه یک شرط True شود، همان بلوک اجرا می‌شود و شرط‌های بعدی بررسی نمی‌شوند.
⚠️ ترتیب شرط‌ها مهم است
شرط‌ها از بالا به پایین بررسی می‌شوند.
ترتیب نادرست:
if score >= 50:
print("Passed")
elif score >= 90:
print("Excellent")

برای score = 95، شرط اول True می‌شود و دیگر elif بررسی نمی‌شود.
🧠 خلاصه
if   → اولین حالت
elif → حالت‌های بعدی
else → هیچ‌کدام درست نبود

🎯 تمرین
برنامه‌ای بنویسید که بر اساس temperature چاپ کند:
30 به بالا   → Hot
20 تا 29 → Warm
10 تا 19 → Cool
کمتر از 10 → Cold

پست ۶۳ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۴
ترکیب if و elif با چند شرط
می‌توانیم در هر شاخه از if و elif چند شرط را با and و or ترکیب کنیم.
🔹 مثال با and
age = 25
has_id = True

if age >= 18 and has_id:
print("Access granted")
elif age >= 18 and not has_id:
print("ID required")
else:
print("Access denied")

اگر:
age >= 18 → True
has_id → True

هر دو شرط اول درست هستند، بنابراین Access granted چاپ می‌شود.
🔹 مثال با or
username = "admin"

if username == "admin" or username == "root":
print("Privileged user")
else:
print("Normal user")

اگر یکی از دو مقایسه True باشد، شرط اجرا می‌شود.
⚠️ نکته مهم
در شرط‌های ترکیبی، از پرانتز برای مشخص کردن منطق استفاده کنید:
age = 20
has_id = True
is_member = False

if age >= 18 and (has_id or is_member):
print("Access granted")

ابتدا:
has_id or is_member
True or False → True

سپس:
age >= 18 and True
True and True → True

🧠 خلاصه
and → همه شرط‌ها باید درست باشند
or → حداقل یک شرط درست باشد
() → گروه‌بندی شرط‌ها

🎯 تمرین
شرطی بنویسید که اگر:
سن حداقل 18 باشد
و
کاربر عضو باشد یا مدیر باشد

پیام Access granted را چاپ کند.
پست ۶۴ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۵
شرط‌های تو در تو با if
گاهی یک شرط فقط زمانی باید بررسی شود که شرط دیگری قبلاً درست بوده باشد. در این حالت از if تو در تو استفاده می‌کنیم.
🔹 مثال
age = 20
has_id = True

if age >= 18:
if has_id:
print("Access granted")
else:
print("ID required")
else:
print("Too young")

ابتدا سن بررسی می‌شود:
age >= 18 → True

پس if داخلی اجرا می‌شود.
سپس:
has_id → True

بنابراین خروجی:
Access granted

🔹 شرط تو در تو با elif
score = 85

if score >= 50:
if score >= 90:
print("Excellent")
elif score >= 75:
print("Good")
else:
print("Passed")
else:
print("Failed")

خروجی:
Good

⚠️ نکته مهم
در شرط‌های تو در تو، تورفتگی (indentation) بسیار مهم است.
if condition:
if another_condition:
print("...")

if دوم داخل if اول قرار دارد.
🧠 خلاصه
if
if
code

یعنی شرط دوم فقط وقتی بررسی می‌شود که شرط اول True باشد.
🎯 تمرین
برنامه‌ای بنویسید که:
اگر کاربر وارد شده بود:
اگر مدیر بود → Admin
در غیر این صورت → User
در غیر این صورت:
Login required

پست ۶۵ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۶
ترکیب if تو در تو با and و or
در پست قبل با شرط‌های تو در تو آشنا شدیم.
حالا می‌توانیم داخل شرط‌های تو در تو از and و or هم استفاده کنیم.
🔹 مثال
is_logged_in = True
is_member = True
is_admin = False

if is_logged_in:
if is_admin or is_member:
print("Access granted")
else:
print("Membership required")
else:
print("Please login")

ابتدا:
is_logged_in → True

پس وارد شرط داخلی می‌شویم.
سپس:
is_admin or is_member
False or True → True

بنابراین:
Access granted

🔹 مثال با and
age = 20
has_id = True
is_member = True

if age >= 18:
if has_id and is_member:
print("Full access")
else:
print("Requirements not met")
else:
print("Too young")

برای Full access هر دو شرط داخلی باید True باشند.
⚠️ نکته مهم
در شرط‌های تو در تو، هر سطح از شرط باید تورفتگی مناسب داشته باشد:
if condition:
if another_condition:
print("...")

🧠 خلاصه
if اول      → شرط اصلی
if دوم → شرط وابسته
and / or → ترکیب شرط‌های داخلی

🎯 تمرین
برنامه‌ای بنویسید که:
اگر کاربر وارد شده بود:
اگر سن حداقل 18 بود:
اگر عضو یا مدیر بود → Access granted
در غیر این صورت → Membership required
در غیر این صورت → Too young
در غیر این صورت:
Please login

پست ۶۶ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۷
تبدیل شرط‌های تو در تو به شرط ترکیبی
گاهی یک شرط تو در تو را می‌توان با and یا or ساده‌تر نوشت.
🔹 حالت تو در تو
age = 20
has_id = True

if age >= 18:
if has_id:
print("Access granted")

می‌توانیم همین منطق را ساده‌تر بنویسیم:
if age >= 18 and has_id:
print("Access granted")

در این حالت، استفاده از and باعث می‌شود کد کوتاه‌تر و خواناتر شود.
🔹 یک مثال دیگر
شرط تو در تو:
is_logged_in = True
is_admin = True

if is_logged_in:
if is_admin:
print("Admin panel")

نسخه ترکیبی:
if is_logged_in and is_admin:
print("Admin panel")

⚠️ نکته مهم
هر شرط تو در تو را نمی‌توان بدون بررسی به and یا or تبدیل کرد.
اگر شرط داخلی فقط زمانی معنا دارد که شرط بیرونی اجرا شده باشد، ساختار تو در تو می‌تواند مناسب‌تر باشد.
🧠 خلاصه
شرط‌های مستقل → معمولاً and / or
شرط وابسته → ممکن است nested if مناسب‌تر باشد

هدف فقط کوتاه کردن کد نیست؛ خوانایی و منطق درست برنامه مهم‌تر است.
🎯 تمرین
کد زیر را بدون if تو در تو بازنویسی کنید:
age = 25
is_member = True

if age >= 18:
if is_member:
print("Access granted")

پست ۶۷ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۸
ترتیب بررسی شرط‌ها در if و elif
وقتی چند شرط با if و elif داریم، Python آن‌ها را از بالا به پایین بررسی می‌کند.
🔹 مثال
score = 95

if score >= 50:
print("Passed")
elif score >= 90:
print("Excellent")

خروجی:
Passed

چرا؟
چون شرط اول:
95 >= 50 → True

است و Python دیگر elif را بررسی نمی‌کند.
🔹 ترتیب درست
شرط‌های خاص‌تر را قبل از شرط‌های عمومی‌تر قرار دهید:
score = 95

if score >= 90:
print("Excellent")
elif score >= 50:
print("Passed")
else:
print("Failed")

خروجی:
Excellent

⚠️ نکته مهم
در if / elif / else:
1. از بالا شروع می‌شود.
2. اولین شرط True اجرا می‌شود.
3. شرط‌های بعدی دیگر بررسی نمی‌شوند.

🧠 خلاصه
شرط خاص‌تر
↓
شرط عمومی‌تر
↓
else

ترتیب شرط‌ها می‌تواند نتیجه برنامه را تغییر دهد.
🎯 تمرین
کد زیر را اصلاح کنید تا برای score = 95 مقدار Excellent چاپ شود:
score = 95

if score >= 50:
print("Passed")
elif score >= 90:
print("Excellent")

پست ۶۸ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۶۹
انتخاب حالت‌ها با match و case
در Python می‌توان برای بررسی چند مقدار مشخص، به‌جای زنجیره‌ای از if و elif از match و case استفاده کرد.
🔹 ساختار
match value:
case pattern:
code

🔹 مثال ساده
day = 2

match day:
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday")
case _:
print("Unknown day")

خروجی:
Tuesday

Python مقدار day را با caseها مقایسه می‌کند.
🔹 case _
علامت _ برای حالت پیش‌فرض استفاده می‌شود:
case _:
print("Unknown day")

یعنی اگر هیچ case دیگری تطبیق نداشت، این بخش اجرا شود.
🔹 مثال کاربردی
command = "start"

match command:
case "start":
print("Starting...")
case "stop":
print("Stopping...")
case "restart":
print("Restarting...")
case _:
print("Unknown command")

⚠️ نکته مهم
match و case از Python 3.10 به بعد در دسترس هستند.
همچنین match فقط جایگزین ساده‌ای برای تمام ifها نیست؛ قابلیت‌های پیشرفته‌تری برای Pattern Matching دارد که بعداً می‌توانیم بررسی کنیم.
🧠 خلاصه
match → مقداری که می‌خواهیم بررسی کنیم
case → حالت‌های مختلف
_ → حالت پیش‌فرض

🎯 تمرین
برنامه‌ای بنویسید که مقدار operation را بررسی کند:
"add" → Addition
"sub" → Subtraction
"mul" → Multiplication
"div" → Division
سایر موارد → Unknown operation

پست ۶۹ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۷۰
Pattern Matching در match
در پست قبل با match و case آشنا شدیم.
حالا یکی از قابلیت‌های مهم match را می‌بینیم: بررسی چند مقدار و الگو به‌صورت هم‌زمان.
🔹 مثال با چند مقدار
point = (0, 5)

match point:
case (0, 0):
print("Origin")
case (0, y):
print("On Y axis")
case (x, 0):
print("On X axis")
case (x, y):
print("Other point")

خروجی:
On Y axis

چون مقدار:
(0, 5)

با الگوی:
case (0, y):

مطابقت دارد و مقدار y برابر 5 می‌شود.
🔹 گرفتن چند مقدار
data = ("Ali", 20)

match data:
case (name, age):
print(name)
print(age)

خروجی:
Ali
20

در اینجا name و age از مقدار داخل data استخراج می‌شوند.
⚠️ نکته مهم
match فقط برای مقایسه ساده نیست؛ می‌تواند ساختار داده را هم بررسی و مقدارهای آن را استخراج کند.
این قابلیت را Pattern Matching می‌نامیم.
🧠 خلاصه
match → بررسی مقدار و الگو
case → تعریف الگو
(x, y) → تطبیق ساختار و استخراج مقدارها

🎯 تمرین
کد زیر را طوری کامل کنید که برای هر حالت پیام مناسب چاپ شود:
point = (10, 0)

match point:
case (0, 0):
print("Origin")
case (x, 0):
print("On X axis")
case (0, y):
print("On Y axis")
case _:
print("Other point")

خروجی را قبل از اجرا پیش‌بینی کنید.
پست ۷۰ از دوره جامع Python 🐍
👍1
🐍 آموزش جامع Python — پست ۷۱
استفاده از شرط در case با if
در match می‌توانیم علاوه بر الگو، یک شرط اضافی هم برای case تعیین کنیم.
به این شرط اضافی Guard می‌گوییم.
🔹 مثال
point = (10, 5)

match point:
case (x, y) if x == y:
print("On diagonal")
case (x, y):
print("Other point")

خروجی:
Other point

چون:
x = 10
y = 5

x == y → False

پس case اول انتخاب نمی‌شود و case دوم اجرا می‌شود.
🔹 مثال دیگر
age = 20

match age:
case age if age >= 18:
print("Adult")
case _:
print("Minor")

خروجی:
Adult

⚠️ نکته مهم
ساختار کلی:
case pattern if condition:
code

ابتدا pattern باید مطابقت داشته باشد، سپس شرط if بررسی می‌شود.
🧠 خلاصه
case pattern → بررسی الگو
if condition → بررسی شرط اضافی

این قابلیت زمانی مفید است که فقط تطبیق مقدار کافی نباشد.
🎯 تمرین
کد زیر را طوری تغییر دهید که فقط وقتی x و y برابر هستند، پیام Equal چاپ شود:
point = (5, 5)

match point:
case (x, y) if x == y:
print("Equal")
case _:
print("Not equal")

پست ۷۱ از دوره جامع Python 🐍