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 — پست ۳۴
چند حالت شرطی | elif
گاهی فقط دو حالت نداریم؛ مثلاً نمره می‌تواند قبول، متوسط یا ضعیف باشد.
برای چند شرط از elif استفاده می‌کنیم.
🔹 ساختار
if condition:
code
elif condition:
code
else:
code

دقت کن:
if اولین شرط است.
elif برای شرط‌های بعدی است.
else برای زمانی است که هیچ‌کدام درست نباشند.
بعد از if، elif و else علامت : قرار می‌گیرد.
🔹 مثال
score = 75

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

خروجی:
Passed

چون شرط score >= 90 نادرست است، اما score >= 50 درست است.
🔹 مثال تعاملی
score = int(input("Enter your score: "))

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

مثلاً:
Enter your score: 95
Excellent

یا:
Enter your score: 30
Failed

⚠️ نکته مهم
در یک زنجیره‌ی if / elif / else فقط اولین شرط درست اجرا می‌شود.
🎯 تمرین
برنامه‌ای بنویس که نمره را از کاربر بگیرد و:
90 به بالا → Excellent
50 تا 89 → Passed
کمتر از 50 → Failed

پست ۳۴ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۳۵
چند شرط با elif
در پست قبل با elif آشنا شدیم.
می‌توانیم چند elif پشت سر هم داشته باشیم تا حالت‌های مختلف را بررسی کنیم.
🔹 مثال
score = int(input("Enter your score: "))

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

مثلاً اگر کاربر وارد کند:
Enter your score: 80

خروجی:
Very Good

⚠️ ترتیب شرط‌ها مهم است
Python شرط‌ها را از بالا به پایین بررسی می‌کند.
به محض اینکه یک شرط True باشد، همان بلوک اجرا می‌شود و بقیه بررسی نمی‌شوند.
پس معمولاً شرط‌های بزرگ‌تر را قبل از شرط‌های کوچک‌تر قرار می‌دهیم.
🔹 یک مثال ساده‌تر
number = int(input("Enter a number: "))

if number > 0:
print("Positive")
elif number < 0:
print("Negative")
else:
print("Zero")

🎯 تمرین
برنامه‌ای بنویس که عدد را از کاربر بگیرد و مشخص کند:
مثبت → Positive
منفی → Negative
صفر → Zero

پست ۳۵ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۳۶
شرط‌های ترکیبی با and و or
گاهی برای تصمیم‌گیری به چند شرط همزمان نیاز داریم.
🔹 استفاده از and
با and باید همه شرط‌ها True باشند:
age = int(input("Enter your age: "))
has_id = input("Do you have an ID? ")

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

برای ورود، هر دو شرط باید درست باشند.
🔹 استفاده از or
با or کافی است حداقل یکی از شرط‌ها True باشد:
username = input("Enter username: ")

if username == "admin" or username == "root":
print("Valid user")
else:
print("Unknown user")

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

🎯 تمرین
برنامه‌ای بنویس که سن و نمره را از کاربر بگیرد و فقط وقتی هر دو شرط برقرار بودند، Accepted را چاپ کند:
سن حداقل 18
نمره حداقل 50

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

if age >= 18:
has_id = input("Do you have an ID? ")

if has_id == "yes":
print("Access granted")
else:
print("ID required")
else:
print("You are under 18")

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

علامت : بعد از هر if ضروری است.
🎯 تمرین
برنامه‌ای بنویس که سن و رمز عبور را از کاربر بگیرد.
فقط اگر:
سن >= 18
رمز عبور == "1234"

باشد، عبارت زیر چاپ شود:
Login successful

پست ۳۷ از دوره جامع Python 🐍
👍1
🐍 آموزش جامع Python — پست ۳۸
منطق چند شرط با and و or
گاهی یک تصمیم به دو شرط وابسته است.
برای ترکیب شرط‌ها از and و or استفاده می‌کنیم.
🔹 and | هر دو شرط باید درست باشند
مثلاً برای ورود، هم سن باید حداقل ۱۸ باشد و هم رمز درست باشد:
age = 20
password = "1234"

if age >= 18 and password == "1234":
print("Login successful")

دو شرط داریم:
age >= 18          → True
password == "1234" → True

چون هر دو True هستند:
True and True → True

پس ورود انجام می‌شود.
اگر یکی از آن‌ها False باشد:
True and False → False
False and True → False
False and False → False

بنابراین در and:
همه شرط‌ها باید

True
باشند.

🔹 or | حداقل یکی از شرط‌ها کافی است
مثلاً کاربر می‌تواند admin یا root باشد:
username = input("Enter username: ")

if username == "admin" or username == "root":
print("Valid username")
else:
print("Invalid username")

اگر:
username == "admin" → True
username == "root" → False

داریم:
True or False → True

پس شرط اجرا می‌شود.
در or:
True or True   → True
True or False → True
False or True → True
False or False → False

بنابراین:
فقط وقتی همه شرط‌ها

False
باشند،

or
نتیجه

False
می‌دهد.

🔥 مقایسه مستقیم
فرض کنیم:
A = True
B = False

با and:
print(A and B)

نتیجه:
False

چون هر دو شرط True نیستند.
اما با or:
print(A or B)

نتیجه:
True

چون حداقل یکی True است.
پس:
A = True
B = False

A and B → False
A or B → True

🔹 پرانتز () چه کاری انجام می‌دهد؟
پرانتز مشخص می‌کند کدام بخش از شرط با هم گروه‌بندی شود.
مثلاً:
A = True
B = False
C = False

print(A or B and C)

طبق اولویت عملگرها، and قبل از or بررسی می‌شود:
A or (B and C)
True or (False and False)
True

اما:
print((A or B) and C)

ابتدا پرانتز:
(A or B) and C
(True or False) and False
True and False
False

پس:
A or B and C     → True
(A or B) and C → False

⚠️ پرانتز می‌تواند منطق و نتیجه شرط را تغییر دهد.
🧠 خلاصه
and → همه شرط‌ها باید True باشند
or → حداقل یک شرط باید True باشد
() → شرط‌ها را گروه‌بندی و ترتیب را مشخص می‌کند

🎯 تمرین
خروجی هر خط را قبل از اجرا حدس بزن:
A = True
B = False

print(A and B)
print(A or B)
print((A or B) and B)
print(A or (B and B))

پست ۳۸ از دوره جامع Python 🐍
👍1
🐍 آموزش جامع Python — پست ۳۹
عملگر not | برعکس کردن شرط
با not نتیجه منطقی یک شرط را معکوس می‌کنیم.
یعنی:
True  → False
False → True

🔹 مثال ساده
is_admin = False

print(not is_admin)

خروجی:
True

چون:
is_admin → False
not False → True

🔹 استفاده در if
is_logged_in = False

if not is_logged_in:
print("Please login")

چون کاربر وارد نشده، not مقدار False را به True تبدیل می‌کند.
🔹 جدول not
شرط
not شرط
True
False
False
True
⚠️ نکته مهم
not روی نتیجه عبارت عمل می‌کند.
مثلاً:
age = 15

print(not age >= 18)

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

سپس:
not False → True

🔹 ترکیب با and و or
age = 20
has_id = False

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

پرانتز باعث می‌شود not روی کل عبارت اعمال شود:
(age >= 18 and has_id)
(True and False)
False

not False
True

🎯 تمرین
خروجی را قبل از اجرا حدس بزن:
A = True
B = False

print(not A)
print(not B)
print(not (A and B))
print(not (A or B))

پست ۳۹ از دوره جامع Python 🐍
👍1
🐍 آموزش جامع Python — پست ۴۰
ترکیب not با and و or
در پست‌های قبل با and، or و not آشنا شدیم.
حالا می‌توانیم این عملگرها را با هم ترکیب کنیم.
🔹 ترکیب not و and
age = 20
has_id = True

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

ابتدا داخل پرانتز بررسی می‌شود:
age >= 18 → True
has_id → True

True and True → True

سپس:
not True → False

پس else اجرا می‌شود.
🔹 ترکیب not و or
username = "guest"

if not (username == "admin" or username == "root"):
print("Access denied")

داخل پرانتز:
username == "admin" → False
username == "root" → False

False or False → False

سپس:
not False → True

پس پیام Access denied نمایش داده می‌شود.
⚠️ نکته مهم
وقتی چند عملگر را ترکیب می‌کنیم، پرانتز خوانایی و منطق شرط را واضح‌تر می‌کند.
مثلاً:
not (A and B)

با:
(not A) and B

یک معنی ندارند.
پس اگر منطق شرط پیچیده شد، از () استفاده کن.
🧠 خلاصه
not → نتیجه را معکوس می‌کند
and → همه شرط‌ها باید True باشند
or → حداقل یک شرط باید True باشد
() → بخش‌های شرط را گروه‌بندی می‌کند

🎯 تمرین
خروجی هر خط را قبل از اجرا حدس بزن:
A = True
B = False

print(not A)
print(not B)
print(not (A and B))
print(not (A or B))

پست ۴۰ از دوره جامع Python 🐍
👍1
🐍 آموزش جامع Python — پست ۴۱
قوانین دمورگان | ساده‌سازی شرط‌ها
گاهی می‌توانیم یک شرط پیچیده را به شکل دیگری بنویسیم، بدون اینکه نتیجه منطقی آن تغییر کند.
این قوانین را قوانین دمورگان (De Morgan's Laws) می‌نامیم.
🔹 قانون اول
not (A and B)

معادل منطقی آن:
(not A) or (not B)

مثال:
A = True
B = False

print(not (A and B))
print((not A) or (not B))

هر دو خروجی:
True

🔹 قانون دوم
not (A or B)

معادل منطقی آن:
(not A) and (not B)

مثال:
A = False
B = False

print(not (A or B))
print((not A) and (not B))

هر دو خروجی:
True

🧠 نکته مهم
وقتی not وارد پرانتز می‌شود:
not (A and B)

and به or تبدیل می‌شود و هر شرط هم not می‌گیرد:
(not A) or (not B)

همین‌طور:
not (A or B)

تبدیل می‌شود به:
(not A) and (not B)

⚠️ اشتباه رایج
این دو معادل نیستند:
not (A and B)
(not A) and (not B)

عملگر وسط باید از and به or تغییر کند.
🎯 تمرین
عبارت معادل هرکدام را بنویس:
not (A and B)
not (A or B)

پست ۴۱ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۴۲
منطق برگشت مقدار در and و or
در Python، and و or همیشه True یا False برنمی‌گردانند؛ ممکن است خودِ یکی از مقادیر را برگردانند.
🔹 رفتار and
در:
A and B

Python ابتدا A را بررسی می‌کند.
اگر A مقدار Falsy باشد، همان A را برمی‌گرداند و B را بررسی نمی‌کند.
اگر A مقدار Truthy باشد، B را برمی‌گرداند.
مثال:
print("" and "Python")

خروجی:
""

چون "" خالی است و Falsy محسوب می‌شود.
اما:
print("Hello" and "Python")

خروجی:
Python

چون "Hello" Truthy است، بنابراین مقدار دوم برگردانده می‌شود.
🔹 رفتار or
در:
A or B

Python ابتدا A را بررسی می‌کند.
اگر A مقدار Truthy باشد، همان A را برمی‌گرداند و B را بررسی نمی‌کند.
اگر A مقدار Falsy باشد، B را برمی‌گرداند.
مثال:
print("Hello" or "Python")

خروجی:
Hello

اما:
print("" or "Python")

خروجی:
Python

🧠 قانون اصلی
A and B
اگر A → Falsy باشد: A
اگر A → Truthy باشد: B

A or B
اگر A → Truthy باشد: A
اگر A → Falsy باشد: B

یعنی and و or در واقع یکی از عملوندها (operands) را برمی‌گردانند.
🔥 مثال کاربردی
می‌توانیم یک مقدار پیش‌فرض تعیین کنیم:
name = ""

result = name or "Unknown"

print(result)

چون name خالی و Falsy است:
Unknown

اگر:
name = "Ali"
result = name or "Unknown"

print(result)

خروجی:
Ali

⚠️ نکته مهم: Short-Circuit
Python در and و or همیشه عبارت دوم را اجرا نمی‌کند.
مثلاً:
x = False

result = x and (10 / 0)

اینجا خطای تقسیم بر صفر نمی‌گیریم؛ چون x از قبل Falsy است و Python دیگر عبارت دوم را بررسی نمی‌کند.
در or نیز اگر مقدار اول Truthy باشد، عبارت دوم بررسی نمی‌شود.
🎯 تمرین
خروجی هر خط را قبل از اجرا حدس بزن:
print("" and "Python")
print("Python" and "Code")
print("" or "Python")
print("Python" or "Code")
print(0 or 100)
print(10 and 20)

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