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 — پست ۴۳
Truthy و Falsy در Python
در Python بعضی مقدارها وقتی در یک شرط بررسی می‌شوند، مثل True رفتار می‌کنند و بعضی مثل False.
به این دو حالت می‌گوییم:
Truthy → در شرط مثل True رفتار می‌کند
Falsy → در شرط مثل False رفتار می‌کند

🔹 مثال ساده
if "Python":
print("True")

چون رشته "Python" خالی نیست، Truthy است.
اما:
if "":
print("True")

چیزی چاپ نمی‌شود؛ چون رشته خالی Falsy است.
🔹 مقدارهای مهم Falsy
این مقدارها در Python معمولاً Falsy هستند:
False
None
0
0.0
""
[]
()
{}
set()

مثلاً:
if 0:
print("Yes")
else:
print("No")

خروجی:
No

🔹 مقدارهای Truthy
تقریباً هر مقدار دیگری Truthy است.
مثلاً:
if 10:
print("Yes")

if -5:
print("Negative")

if "Hello":
print("Text")

هر سه شرط اجرا می‌شوند.
⚠️ نکته مهم درباره "0"
این مقدار:
"0"

یک رشته غیرخالی است؛ بنابراین Truthy است.
if "0":
print("Yes")

خروجی:
Yes

اما:
if 0:
print("Yes")
else:
print("No")

خروجی:
No

پس:
0    → Falsy
"0" → Truthy

🔹 ارتباط با bool()
می‌توانیم رفتار منطقی یک مقدار را با bool() ببینیم:
print(bool(0))
print(bool(10))
print(bool(""))
print(bool("Python"))
print(bool([]))
print(bool([1, 2]))

خروجی:
False
True
False
True
False
True

🧠 خلاصه
Falsy:
False, None, 0, 0.0, "", [], (), {}, set()

Truthy:
تقریباً تمام مقدارهای دیگر

این مفهوم دلیل رفتار بسیاری از شرط‌ها و همچنین and و or در Python است.
🎯 تمرین
خروجی هر خط را حدس بزن:
print(bool(0))
print(bool(1))
print(bool(""))
print(bool("0"))
print(bool([]))
print(bool([0]))
print(bool(None))

پست ۴۳ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۴۴
استفاده از Truthy و Falsy در شرط‌ها
حالا که Truthy و Falsy را می‌شناسیم، ببینیم چطور در if استفاده می‌شوند.
🔹 بررسی مستقیم مقدار
لازم نیست همیشه بنویسیم:
if name != "":

می‌توانیم ساده‌تر بنویسیم:
name = "Ali"

if name:
print("Name exists")

چون "Ali" غیرخالی است، Truthy است.
🔹 رشته خالی
name = ""

if name:
print("Name exists")
else:
print("Name is empty")

خروجی:
Name is empty

چون "" Falsy است.
🔹 لیست خالی
users = []

if users:
print("Users found")
else:
print("No users")

خروجی:
No users

اما:
users = ["Ali", "Sara"]

if users:
print("Users found")

خروجی:
Users found

لیست خالی [] Falsy و لیست دارای عضو Truthy است.
🔹 عدد صفر
score = 0

if score:
print("Score exists")
else:
print("Score is zero")

خروجی:
Score is zero

چون 0 Falsy است.
⚠️ نکته مهم
Truthy/Falsy به این معنی نیست که مقدار واقعاً True یا False است.
مثلاً:
x = 10

print(x)
print(bool(x))

خروجی:
10
True

خود x برابر 10 است، اما وقتی در یک شرط بررسی شود، مثل True رفتار می‌کند.
🧠 خلاصه
if مقدار:
# اگر مقدار Truthy باشد

else:
# اگر مقدار Falsy باشد

این روش در Python بسیار رایج است و کد را کوتاه‌تر و خواناتر می‌کند.
🎯 تمرین
خروجی را حدس بزن:
values = ["", "Python", 0, 5, [], [1]]

for value in values:
if value:
print("Truthy")
else:
print("Falsy")

for را در فصل حلقه‌ها کامل یاد می‌گیریم.
پست ۴۴ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۴۵
تبدیل مقدارها به True و False با bool()
در پست‌های قبل با Truthy و Falsy آشنا شدیم.
برای اینکه ببینیم یک مقدار در شرط چگونه ارزیابی می‌شود، می‌توانیم از bool() استفاده کنیم.
🔹 مثال
print(bool(10))
print(bool(0))

خروجی:
True
False

چون 10 Truthy و 0 Falsy است.
🔹 رشته‌ها
print(bool("Python"))
print(bool(""))

خروجی:
True
False

رشته غیرخالی → Truthy
رشته خالی → Falsy
🔹 لیست‌ها
print(bool([1, 2]))
print(bool([]))

خروجی:
True
False

لیست دارای عضو → Truthy
لیست خالی → Falsy
🔹 None
print(bool(None))

خروجی:
False

None نیز Falsy است.
🔹 استفاده در شرط
می‌توانیم نتیجه bool() را مستقیماً در if استفاده کنیم:
name = "Ali"

if bool(name):
print("Name exists")
else:
print("Name is empty")

خروجی:
Name exists

چون "Ali" یک رشته غیرخالی و در نتیجه Truthy است.
البته معمولاً نیازی به نوشتن bool() نداریم و این شکل رایج‌تر است:
if name:
print("Name exists")

⚠️ نکته مهم
bool() مقدار اصلی را تغییر نمی‌دهد؛ فقط نتیجه ارزیابی منطقی آن را برمی‌گرداند.
x = 25

print(x)
print(bool(x))

خروجی:
25
True

🧠 خلاصه
bool(0)       → False
bool(10) → True
bool("") → False
bool("Hello") → True
bool([]) → False
bool([1]) → True
bool(None) → False

🎯 تمرین
خروجی را حدس بزن:
print(bool(-1))
print(bool(0.0))
print(bool("0"))
print(bool([]))
print(bool([0]))
print(bool(None))

پست ۴۵ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۴۶
ترکیب Truthy و Falsy با and و or
حالا می‌توانیم رفتار Truthy و Falsy را با and و or ترکیب کنیم.
🔹 با and
name = "Ali"

result = name and "User exists"
print(result)

خروجی:
User exists

چون name غیرخالی و Truthy است، مقدار سمت راست برگردانده می‌شود.
اگر:
name = ""

result = name and "User exists"
print(result)

خروجی:
چون name خالی و Falsy است، همان مقدار خالی برگردانده می‌شود.
🔹 با or
or معمولاً برای تعیین مقدار پیش‌فرض کاربرد دارد:
name = ""

result = name or "Unknown"
print(result)

خروجی:
Unknown

اما اگر:
name = "Ali"

result = name or "Unknown"
print(result)

خروجی:
Ali

چون "Ali" Truthy است.
🔥 مثال کاربردی
username = input("Username: ")

if username:
print("Username entered")
else:
print("Username is empty")

اگر کاربر چیزی وارد نکند، input() رشته‌ی خالی "" برمی‌گرداند و شرط Falsy می‌شود.
🧠 خلاصه
and → اگر مقدار اول Falsy باشد، همان را برمی‌گرداند.
or → اگر مقدار اول Truthy باشد، همان را برمی‌گرداند.

🎯 تمرین
خروجی را حدس بزن:
print("" or "Python")
print("Hello" or "Python")
print("" and "Python")
print("Hello" and "Python")

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

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

هر دو شرط درست هستند، پس کد اجرا می‌شود.
اگر یکی از شرط‌ها False باشد:
age = 20
has_id = False

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

چیزی چاپ نمی‌شود.
and → همه شرط‌ها باید True باشند

🔹 or
در or کافی است حداقل یکی از شرط‌ها True باشد:
is_admin = False
is_manager = True

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

چون یکی از شرط‌ها True است، کد اجرا می‌شود.
فقط وقتی هر دو False باشند، شرط اجرا نمی‌شود:
or → حداقل یکی از شرط‌ها باید True باشد

🧠 مقایسه سریع
and
or
همه شرط‌ها True
حداقل یک شرط True
True and True → True
True or False → True
True and False → False
False or False → False
🔥 مثال واقعی
فرض کنید ورود فقط زمانی مجاز است که کاربر بالای ۱۸ سال باشد و کارت شناسایی داشته باشد:
if age >= 18 and has_id:
print("Allowed")

اما اگر ورود با کارت مخصوص یا رمز عبور امکان‌پذیر باشد:
if has_special_card or has_password:
print("Allowed")

⚠️ نکته
and و or در شرط‌ها بر اساس Truthy/Falsy هم عمل می‌کنند؛ یعنی شرط الزاماً نباید نتیجه‌ی صریح True یا False داشته باشد.
مثلاً:
name = "Ali"

if name and "Python":
print("OK")

هر دو مقدار Truthy هستند، پس شرط اجرا می‌شود.
🎯 تمرین
خروجی را حدس بزن:
a = True
b = False

if a and b:
print("A")

if a or b:
print("B")

پست ۴۷ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۴۸
توقف کوتاه‌مدت | Short-Circuit
در Python، هنگام استفاده از and و or، همیشه همه عبارت‌ها بررسی نمی‌شوند.
Python از Short-Circuit Evaluation استفاده می‌کند.
🔹 در and
اگر مقدار اول Falsy باشد، Python دیگر سمت راست را بررسی نمی‌کند.
x = False

result = x and (10 / 0)

print(result)

خروجی:
False

با اینکه 10 / 0 خطاست، خطایی رخ نمی‌دهد؛ چون Python قبل از رسیدن به آن متوقف شده است.
🔹 در or
اگر مقدار اول Truthy باشد، Python سمت راست را بررسی نمی‌کند.
name = "Ali"

result = name or (10 / 0)

print(result)

خروجی:
Ali

عبارت (10 / 0) اصلاً اجرا نمی‌شود.
🔥 مثال کاربردی
username = ""

if username and username.startswith("admin"):
print("Admin user")

اگر username خالی باشد، شرط اول Falsy است؛ بنابراین Python سراغ startswith() نمی‌رود.
🧠 قانون ساده
A and B
اگر A → Falsy
B بررسی نمی‌شود.

A or B
اگر A → Truthy
B بررسی نمی‌شود.

این رفتار هم باعث جلوگیری از اجرای غیرضروری کد می‌شود و هم در بعضی شرایط از خطا جلوگیری می‌کند.
🎯 تمرین
کدام عبارت اجرا می‌شود؟
x = ""

print(x and "Python")
print(x or "Python")

پست ۴۸ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۴۹
الگوهای کاربردی شرطی با and و or
حالا که رفتار and و or را می‌دانیم، چند الگوی رایج و کاربردی را ببینیم.
🔹 مقدار پیش‌فرض با or
اگر مقدار وجود نداشته باشد، مقدار جایگزین استفاده می‌شود:
name = ""

display_name = name or "Guest"

print(display_name)

خروجی:
Guest

اگر name مقدار داشته باشد:
name = "Ali"

display_name = name or "Guest"

print(display_name)

خروجی:
Ali

🔹 اجرای شرط دوم با and
is_logged_in = True

is_logged_in and print("Welcome")

چون is_logged_in مقدار Truthy دارد، print() اجرا می‌شود.
اما:
is_logged_in = False

is_logged_in and print("Welcome")

چیزی چاپ نمی‌شود؛ چون and در مقدار Falsy متوقف می‌شود.
⚠️ نکته
این روش برای کدهای کوتاه قابل استفاده است، اما برای منطق پیچیده معمولاً if خواناتر است.
مثلاً:
if is_logged_in:
print("Welcome")

خواناتر از:
is_logged_in and print("Welcome")

است.
🧠 خلاصه
or  → انتخاب یک مقدار جایگزین
and → اجرای عبارت بعدی در صورت Truthy بودن مقدار قبلی

🎯 تمرین
خروجی را حدس بزن:
name = ""
age = 20

print(name or "Unknown")
print(age and "Adult")
print(0 and "Zero")

پست ۴۹ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۰
شرط کوتاه با if و else | Conditional Expression
گاهی یک شرط ساده داریم و می‌توانیم آن را در یک خط بنویسیم.
🔹 حالت معمول
age = 20

if age >= 18:
status = "Adult"
else:
status = "Minor"

print(status)

🔹 حالت کوتاه
همین کد را می‌توانیم این‌طور بنویسیم:
age = 20

status = "Adult" if age >= 18 else "Minor"

print(status)

خروجی:
Adult

ساختار کلی:
value_if_true if condition else value_if_false

یعنی:
اگر شرط True → مقدار اول
اگر شرط False → مقدار دوم

🔹 مثال دیگر
score = 75

result = "Passed" if score >= 50 else "Failed"

print(result)

خروجی:
Passed

⚠️ نکته مهم
این ساختار برای شرط‌های ساده مناسب است.
اگر شرط پیچیده و طولانی شد، معمولاً if / else معمولی خواناتر است.
🧠 خلاصه
x = A if condition else B

یعنی اگر condition درست باشد، A و در غیر این صورت B در x قرار می‌گیرد.
🎯 تمرین
کد زیر چه چیزی چاپ می‌کند؟
number = 7

result = "Even" if number % 2 == 0 else "Odd"

print(result)

پست ۵۰ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۵۱
شرط‌های تو در تو در Python | Nested if
در Python می‌توانیم یک if را داخل if دیگری قرار دهیم. به این ساختار شرط تو در تو می‌گوییم.
🔹 مثال ساده
age = 20
has_id = True

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

ابتدا شرط سن بررسی می‌شود.
اگر age >= 18 درست باشد، شرط دوم بررسی می‌شود.
age >= 18 → True
has_id → True

پس:
Access granted

🔹 استفاده از else
age = 20
has_id = False

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

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

هر if جدید باید در سطح درست قرار بگیرد.
🧠 خلاصه
if
└── if
└── code

یعنی یک شرط را فقط در صورتی بررسی کنیم که شرط قبلی برقرار باشد.
🎯 تمرین
کد را طوری کامل کن که فقط اگر سن حداقل ۱۸ بود، رمز عبور بررسی شود:
age = 20
password = "1234"

if age >= 18:
# شرط رمز عبور

پست ۵۱ از دوره جامع Python 🐍
🐍 آموزش جامع 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 🐍