🐍 آموزش جامع 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 — پست ۵۷
ترکیب چند شرط برای اعتبارسنجی
گاهی برای معتبر بودن یک مقدار، باید چند شرط همزمان برقرار باشند.
🔹 مثال
در اینجا هر دو شرط باید
پس:
🔹 استفاده از
اگر کافی باشد یکی از شرطها درست باشد:
⚠️ نکته مهم
برای ترکیب شرطهای پیچیده، از پرانتز استفاده کنید:
ابتدا:
بررسی میشود.
🧠 خلاصه
🎯 تمرین
کدی بنویسید که اگر:
پیام
پست ۵۷ از دوره جامع 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 — پست ۵۸
اعتبارسنجی چند مقدار با شرطها
گاهی لازم است چند مقدار را همزمان بررسی کنیم.
🔹 مثال
در اینجا:
چون هر دو شرط درست هستند، خروجی:
🔹 چند حالت مختلف
ابتدا بررسی میکنیم نمره خارج از محدوده
⚠️ نکته مهم
در اعتبارسنجی، معمولاً بهتر است ابتدا مقادیر نامعتبر را بررسی کنیم و بعد سراغ حالتهای معتبر برویم.
🧠 خلاصه
🎯 تمرین
برنامهای بنویسید که
پست ۵۸ از دوره جامع 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 میتوانیم چند مقایسه را در یک شرط ترکیب کنیم.
🔹 مثال
اینجا Python بررسی میکند:
هر دو باید درست باشند.
🔹 با
همین شرط را میتوانیم اینطور بنویسیم:
🔹 مثال با نمره
⚠️ نکته مهم
مقایسه زنجیرهای:
از نظر منطقی معادل است با:
این ویژگی مخصوص 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 — پست ۶۰
استفاده از
با
🔹 مثال ساده
چون:
پس شرط اجرا میشود.
🔹 مثال با مقایسه
ابتدا:
🔹
میتوانیم چند شرط را داخل پرانتز قرار دهیم و نتیجه کلی را معکوس کنیم:
ابتدا:
سپس:
بنابراین
🔹 ترکیب با
هر دو بخش شرط باید درست باشند.
⚠️ نکته مهم
پرانتز مشخص میکند
یعنی نتیجه کل
🧠 خلاصه
🎯 تمرین
خروجی را پیشبینی کنید.
پست ۶۰ از دوره جامع 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 اجرا میشود.🔹 ترکیب با
andis_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 — پست ۶۱
ترکیب
در پست قبل با
حالا میتوانیم
🔹 مثال با
اینجا:
پس:
🔹 مثال با
ابتدا داخل پرانتز بررسی میشود:
سپس:
پس پیام
⚠️ نکته مهم
پرانتز در این نوع شرطها بسیار مهم است:
یعنی ابتدا
🧠 خلاصه
🎯 تمرین
خروجی کد زیر را قبل از اجرا پیشبینی کنید:
پست ۶۱ از دوره جامع Python 🐍
ترکیب
not با and و orدر پست قبل با
not آشنا شدیم.حالا میتوانیم
not را همراه با and و or استفاده کنیم.🔹 مثال با
andage = 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
🔹 مثال با
orusername = "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 — پست ۶۲
اولویت
وقتی
🔹 ترتیب بررسی
در شرطهایی که تا اینجا یاد گرفتیم:
یعنی
🔹 مثال
ابتدا:
سپس:
پس خروجی:
🔹 استفاده از پرانتز
پرانتز میتواند ترتیب را تغییر دهد:
ابتدا:
سپس:
⚠️ نکته مهم
این دو عبارت همیشه یک شکل نوشته نمیشوند:
و:
پرانتز مشخص میکند
🧠 خلاصه
اگر شرط پیچیده شد، برای خوانایی از
🎯 تمرین
خروجی هر دو عبارت را قبل از اجرا پیشبینی کنید:
پست ۶۲ از دوره جامع 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 — پست ۶۳
ترکیب چند شرط با
گاهی یک مقدار میتواند در چند حالت مختلف قرار بگیرد. در این شرایط از
🔹 مثال
خروجی:
چون:
به محض اینکه یک شرط
⚠️ ترتیب شرطها مهم است
شرطها از بالا به پایین بررسی میشوند.
ترتیب نادرست:
برای
🧠 خلاصه
🎯 تمرین
برنامهای بنویسید که بر اساس
پست ۶۳ از دوره جامع 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 — پست ۶۴
ترکیب
میتوانیم در هر شاخه از
🔹 مثال با
اگر:
هر دو شرط اول درست هستند، بنابراین
🔹 مثال با
اگر یکی از دو مقایسه
⚠️ نکته مهم
در شرطهای ترکیبی، از پرانتز برای مشخص کردن منطق استفاده کنید:
ابتدا:
سپس:
🧠 خلاصه
🎯 تمرین
شرطی بنویسید که اگر:
پیام
پست ۶۴ از دوره جامع Python 🐍
ترکیب
if و elif با چند شرطمیتوانیم در هر شاخه از
if و elif چند شرط را با and و or ترکیب کنیم.🔹 مثال با
andage = 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 چاپ میشود.🔹 مثال با
orusername = "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 — پست ۶۵
شرطهای تو در تو با
گاهی یک شرط فقط زمانی باید بررسی شود که شرط دیگری قبلاً درست بوده باشد. در این حالت از
🔹 مثال
ابتدا سن بررسی میشود:
پس
سپس:
بنابراین خروجی:
🔹 شرط تو در تو با
خروجی:
⚠️ نکته مهم
در شرطهای تو در تو، تورفتگی (
🧠 خلاصه
یعنی شرط دوم فقط وقتی بررسی میشود که شرط اول
🎯 تمرین
برنامهای بنویسید که:
پست ۶۵ از دوره جامع 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
🔹 شرط تو در تو با
elifscore = 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 — پست ۶۶
ترکیب
در پست قبل با شرطهای تو در تو آشنا شدیم.
حالا میتوانیم داخل شرطهای تو در تو از
🔹 مثال
ابتدا:
پس وارد شرط داخلی میشویم.
سپس:
بنابراین:
🔹 مثال با
برای
⚠️ نکته مهم
در شرطهای تو در تو، هر سطح از شرط باید تورفتگی مناسب داشته باشد:
🧠 خلاصه
🎯 تمرین
برنامهای بنویسید که:
پست ۶۶ از دوره جامع 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
🔹 مثال با
andage = 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 — پست ۶۷
تبدیل شرطهای تو در تو به شرط ترکیبی
گاهی یک شرط تو در تو را میتوان با
🔹 حالت تو در تو
میتوانیم همین منطق را سادهتر بنویسیم:
در این حالت، استفاده از
🔹 یک مثال دیگر
شرط تو در تو:
نسخه ترکیبی:
⚠️ نکته مهم
هر شرط تو در تو را نمیتوان بدون بررسی به
اگر شرط داخلی فقط زمانی معنا دارد که شرط بیرونی اجرا شده باشد، ساختار تو در تو میتواند مناسبتر باشد.
🧠 خلاصه
هدف فقط کوتاه کردن کد نیست؛ خوانایی و منطق درست برنامه مهمتر است.
🎯 تمرین
کد زیر را بدون
پست ۶۷ از دوره جامع 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 — پست ۶۸
ترتیب بررسی شرطها در
وقتی چند شرط با
🔹 مثال
خروجی:
چرا؟
چون شرط اول:
است و 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 — پست ۶۹
انتخاب حالتها با
در Python میتوان برای بررسی چند مقدار مشخص، بهجای زنجیرهای از
🔹 ساختار
🔹 مثال ساده
خروجی:
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 در
در پست قبل با
حالا یکی از قابلیتهای مهم
🔹 مثال با چند مقدار
خروجی:
چون مقدار:
با الگوی:
مطابقت دارد و مقدار
🔹 گرفتن چند مقدار
خروجی:
در اینجا
⚠️ نکته مهم
این قابلیت را Pattern Matching مینامیم.
🧠 خلاصه
🎯 تمرین
کد زیر را طوری کامل کنید که برای هر حالت پیام مناسب چاپ شود:
خروجی را قبل از اجرا پیشبینی کنید.
پست ۷۰ از دوره جامع 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 — پست ۷۱
استفاده از شرط در
در
به این شرط اضافی Guard میگوییم.
🔹 مثال
خروجی:
چون:
پس
🔹 مثال دیگر
خروجی:
⚠️ نکته مهم
ساختار کلی:
ابتدا
🧠 خلاصه
این قابلیت زمانی مفید است که فقط تطبیق مقدار کافی نباشد.
🎯 تمرین
کد زیر را طوری تغییر دهید که فقط وقتی
پست ۷۱ از دوره جامع 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 🐍
🐍 آموزش جامع Python — پست ۷۲
چند الگو در یک
در
🔹 مثال
اگر مقدار
چون
🔹 مثال با چند مقدار
خروجی:
⚠️ نکته مهم
علامت
مثلاً:
یعنی مقدار باید با
🧠 خلاصه
یعنی اگر مقدار با
🎯 تمرین
کدی بنویسید که:
پست ۷۲ از دوره جامع Python 🐍
چند الگو در یک
caseدر
match میتوانیم چند مقدار یا الگوی مختلف را با | داخل یک case بررسی کنیم.🔹 مثال
command = "start"
match command:
case "start" | "run":
print("Starting...")
case "stop" | "exit":
print("Stopping...")
case _:
print("Unknown command")
اگر مقدار
command برابر "run" باشد، خروجی:Starting...
چون
"start" یا "run" هر کدام میتوانند با این case مطابقت داشته باشند.🔹 مثال با چند مقدار
day = 6
match day:
case 1 | 2 | 3 | 4 | 5:
print("Weekday")
case 6 | 7:
print("Weekend")
case _:
print("Invalid day")
خروجی:
Weekend
⚠️ نکته مهم
علامت
| در اینجا یعنی:این الگو OR آن الگو
مثلاً:
case "start" | "run":
یعنی مقدار باید با
"start" یا "run" مطابقت داشته باشد.🧠 خلاصه
case A | B:
یعنی اگر مقدار با
A یا B مطابقت داشت، این case اجرا شود.🎯 تمرین
کدی بنویسید که:
"jpg" یا "png" → Image
"mp3" یا "wav" → Audio
"mp4" یا "mkv" → Video
سایر موارد → Unknown
پست ۷۲ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۷۳
تطبیق ساختار دادهها با
یکی از قابلیتهای قدرتمند
🔹 تطبیق لیست
خروجی:
Python تشخیص میدهد که
🔹 تطبیق تعداد متفاوت
خروجی:
🔹 گرفتن بقیه مقدارها با
خروجی:
⚠️ نکته مهم
در Pattern Matching، شکل داده هم میتواند بخشی از الگو باشد:
یعنی انتظار داریم داده ساختاری شامل دو عنصر داشته باشد.
🧠 خلاصه
🎯 تمرین
خروجی کد زیر را پیشبینی کنید:
پست ۷۳ از دوره جامع Python 🐍
تطبیق ساختار دادهها با
matchیکی از قابلیتهای قدرتمند
match این است که میتوانیم ساختار دادهها را بررسی کنیم.🔹 تطبیق لیست
data = [10, 20]
match data:
case [x, y]:
print("Two values:", x, y)
case _:
print("Different structure")
خروجی:
Two values: 10 20
Python تشخیص میدهد که
data شامل دو مقدار است و آنها را در x و y قرار میدهد.🔹 تطبیق تعداد متفاوت
data = [10, 20, 30]
match data:
case [x]:
print("One value")
case [x, y]:
print("Two values")
case [x, y, z]:
print("Three values")
خروجی:
Three values
🔹 گرفتن بقیه مقدارها با
*data = [1, 2, 3, 4]
match data:
case [first, *rest]:
print(first)
print(rest)
خروجی:
1
[2, 3, 4]
*rest تمام مقدارهای باقیمانده را دریافت میکند.⚠️ نکته مهم
در Pattern Matching، شکل داده هم میتواند بخشی از الگو باشد:
case [x, y]:
یعنی انتظار داریم داده ساختاری شامل دو عنصر داشته باشد.
🧠 خلاصه
[x, y] → دو مقدار
[x, y, z] → سه مقدار
[first, *rest] → اولین مقدار + بقیه
🎯 تمرین
خروجی کد زیر را پیشبینی کنید:
data = [5, 10, 15, 20]
match data:
case [first, *rest]:
print(first)
print(rest)
پست ۷۳ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۷۴
Pattern Matching با
در
🔹 مثال ساده
خروجی:
Python کلیدهای
🔹 بررسی یک کلید خاص
لازم نیست تمام کلیدهای دیکشنری را در الگو بنویسیم:
خروجی:
🔹 ترکیب با شرط
میتوانیم بعد از Pattern Matching از
⚠️ نکته مهم
در Pattern Matching با
مثلاً این الگو:
میتواند با این دیکشنری هم مطابقت داشته باشد:
🧠 خلاصه
🎯 تمرین
کدی بنویسید که دیکشنری زیر را بررسی کند:
اگر
در غیر این صورت:
پست ۷۴ از دوره جامع Python 🐍
Pattern Matching با
dictدر
match میتوانیم ساختار یک دیکشنری (dict) را هم بررسی کنیم.🔹 مثال ساده
user = {"name": "Ali", "age": 20}
match user:
case {"name": name, "age": age}:
print(name)
print(age)
case _:
print("Invalid data")خروجی:
Ali
20
Python کلیدهای
name و age را بررسی میکند و مقدارهای آنها را در متغیرهای name و age قرار میدهد.🔹 بررسی یک کلید خاص
لازم نیست تمام کلیدهای دیکشنری را در الگو بنویسیم:
user = {"name": "Ali", "age": 20, "admin": True}
match user:
case {"admin": True}:
print("Admin user")
case _:
print("Normal user")خروجی:
Admin user
🔹 ترکیب با شرط
میتوانیم بعد از Pattern Matching از
if هم استفاده کنیم:user = {"name": "Ali", "age": 20}
match user:
case {"name": name, "age": age} if age >= 18:
print(f"{name} is an adult")
case _:
print("Other user")⚠️ نکته مهم
در Pattern Matching با
dict، وجود کلیدهای اضافه معمولاً مانع تطبیق نمیشود.مثلاً این الگو:
case {"name": name}:میتواند با این دیکشنری هم مطابقت داشته باشد:
{"name": "Ali", "age": 20}🧠 خلاصه
case {"name": name} → استخراج مقدار name
case {"admin": True} → بررسی مقدار یک کلید🎯 تمرین
کدی بنویسید که دیکشنری زیر را بررسی کند:
user = {
"name": "Sara",
"age": 25,
"admin": True
}اگر
admin برابر True بود، چاپ کند:Admin
در غیر این صورت:
Normal user
پست ۷۴ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۷۵
تطبیق اشیاء با
در پستهای قبل دیدیم که
حالا میخواهیم ببینیم چطور میتوانیم ساختار یک شیء را هم بررسی کنیم.
🔹 مثال
برای این بخش از یک کلاس ساده استفاده میکنیم:
خروجی:
🔹 شرط روی مقدار استخراجشده
میتوانیم بعد از تطبیق، شرط هم قرار دهیم:
خروجی:
⚠️ نکته مهم
هر مقدار موقعیتی به کدام ویژگی کلاس مربوط شود.
در مثال ما:
🧠 خلاصه
🎯 تمرین
کلاس زیر را بسازید:
سپس با
پست ۷۵ از دوره جامع Python 🐍
تطبیق اشیاء با
matchدر پستهای قبل دیدیم که
match میتواند با لیست و دیکشنری کار کند.حالا میخواهیم ببینیم چطور میتوانیم ساختار یک شیء را هم بررسی کنیم.
🔹 مثال
برای این بخش از یک کلاس ساده استفاده میکنیم:
class User:
__match_args__ = ("name", "age")
def __init__(self, name, age):
self.name = name
self.age = age
user = User("Ali", 20)
match user:
case User(name, age):
print(name)
print(age)
case _:
print("Unknown user")
خروجی:
Ali
20
🔹 شرط روی مقدار استخراجشده
میتوانیم بعد از تطبیق، شرط هم قرار دهیم:
match user:
case User(name, age) if age >= 18:
print(f"{name} is an adult")
case User(name, age):
print(f"{name} is a minor")
خروجی:
Ali is an adult
⚠️ نکته مهم
__match_args__ مشخص میکند وقتی مینویسیم:case User(name, age):
هر مقدار موقعیتی به کدام ویژگی کلاس مربوط شود.
در مثال ما:
name → user.name
age → user.age
🧠 خلاصه
match میتواند علاوه بر مقدارهای ساده و ساختارهایی مثل list و dict، با اشیاء کلاسها نیز Pattern Matching انجام دهد.🎯 تمرین
کلاس زیر را بسازید:
class Product:
__match_args__ = ("name", "price")
def __init__(self, name, price):
self.name = name
self.price = price
سپس با
match بررسی کنید:price >= 100 → Expensive
price < 100 → Cheap
پست ۷۵ از دوره جامع Python 🐍
👍1
🐍 آموزش جامع Python — پست ۷۶
محدوده متغیرها |
تا اینجا بیشتر متغیرها را در سطح اصلی برنامه تعریف کردیم.
حالا باید با مفهوم Scope یا محدوده دسترسی متغیرها آشنا شویم.
🔹 متغیر در محدوده اصلی
متغیر
🔹 متغیر داخل شرط
در Python، ایجاد شدن متغیر داخل
🔹 متغیر داخل تابع
اینجا
اگر خارج از تابع بنویسیم:
با خطا مواجه میشویم، چون
🔹 متغیر سراسری
تابع میتواند متغیر سراسری
⚠️ نکته مهم
وجود
🧠 خلاصه
در پستهای بعدی Scope و نحوه کار متغیرها در توابع را دقیقتر بررسی میکنیم.
🎯 تمرین
خروجی کد زیر را پیشبینی کنید:
پست ۷۶ از دوره جامع Python 🐍
محدوده متغیرها |
Scopeتا اینجا بیشتر متغیرها را در سطح اصلی برنامه تعریف کردیم.
حالا باید با مفهوم Scope یا محدوده دسترسی متغیرها آشنا شویم.
🔹 متغیر در محدوده اصلی
name = "Ali"
print(name)
متغیر
name در محدوده اصلی برنامه قرار دارد و از همان محدوده قابل دسترسی است.🔹 متغیر داخل شرط
if True:
age = 20
print(age)
در Python، ایجاد شدن متغیر داخل
if یک Scope جداگانه ایجاد نمیکند؛ بنابراین age در این مثال قابل دسترسی است.🔹 متغیر داخل تابع
def show_name():
name = "Ali"
print(name)
show_name()
اینجا
name داخل تابع تعریف شده است.اگر خارج از تابع بنویسیم:
def show_name():
name = "Ali"
show_name()
print(name)
با خطا مواجه میشویم، چون
name یک متغیر محلی (Local) است.🔹 متغیر سراسری
name = "Ali"
def show_name():
print(name)
show_name()
تابع میتواند متغیر سراسری
name را بخواند.⚠️ نکته مهم
وجود
if بهتنهایی Scope جدید ایجاد نمیکند، اما تابع Scope محلی ایجاد میکند.🧠 خلاصه
Global → محدوده اصلی برنامه
Local → محدوده داخل تابع
if → Scope جداگانه ایجاد نمیکند
در پستهای بعدی Scope و نحوه کار متغیرها در توابع را دقیقتر بررسی میکنیم.
🎯 تمرین
خروجی کد زیر را پیشبینی کنید:
x = 10
if True:
y = 20
print(x)
print(y)
پست ۷۶ از دوره جامع Python 🐍