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 و not
گاهی لازم است چند شرط را با هم ترکیب کنیم.
برای این کار از سه عملگر منطقی استفاده می‌کنیم:
and
or
not

🔹 and
هر دو شرط باید True باشند:
print(10 > 5 and 20 > 10)

خروجی:
True

اما:
print(10 > 5 and 20 < 10)

خروجی:
False

🔹 or
کافی است حداقل یکی از شرط‌ها True باشد:
print(10 > 5 or 20 < 10)

خروجی:
True

اگر هر دو False باشند:
print(10 < 5 or 20 < 10)

خروجی:
False

🔹 not
نتیجه را برعکس می‌کند:
print(not True)
print(not False)

خروجی:
False
True

مثلاً:
x = 10

print(not x == 5)

خروجی:
True

چون x == 5 برابر False است و not آن را برعکس می‌کند.
🧠 خلاصه
and → هر دو باید True باشند
or → حداقل یکی باید True باشد
not → True و False را برعکس می‌کند

🎯 تمرین
خروجی هر خط را قبل از اجرا حدس بزن:
x = 10

print(x > 5 and x < 20)
print(x > 20 or x == 10)
print(not x == 10)

پست ۳۰ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۳۱
اولویت عملگرها در Python
وقتی چند عملگر در یک عبارت داشته باشیم، Python آن‌ها را با یک ترتیب مشخص بررسی می‌کند.
🔹 ترتیب مهم
برای بخش‌هایی که تا اینجا یاد گرفتیم:
()
**
* / // %
+ -
== != > < >= <=
not
and
or

یعنی:
مقایسه‌ها قبل از not انجام می‌شوند.
not قبل از and انجام می‌شود.
and قبل از or انجام می‌شود.
🔹 مثال
result = True or False and False

print(result)

ابتدا and محاسبه می‌شود:
False and False → False

سپس:
True or False → True

خروجی:
True

🔹 مثال مهم برای not
x = 10

print(not x == 5)

ابتدا مقایسه انجام می‌شود:
x == 5 → False

سپس not:
not False → True

پس خروجی:
True

🔹 استفاده از ()
برای مشخص‌کردن ترتیب موردنظر، از پرانتز استفاده می‌کنیم:
result = (True or False) and False

print(result)

ابتدا:
True or False → True

سپس:
True and False → False

خروجی:
False

🧠 نکته مهم
ترتیب منطقی را این‌طور به خاطر بسپار:
مقایسه → not → and → or

و اگر ترتیب برایت مبهم است، از () استفاده کن.
🎯 تمرین
خروجی را بدون اجرا حدس بزن:
print(not False and False)
print(not (False and False))
print(True or False and False)

پست ۳۱ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۳۲
شرط‌ها در Python | if و else
با if می‌توانیم بگوییم:
اگر یک شرط درست بود، این کد را اجرا کن.
با else هم مشخص می‌کنیم اگر شرط درست نبود، چه اتفاقی بیفتد.
🔹 ساختار if
if condition:
code

بعد از شرط : قرار می‌گیرد و کد داخل if باید تورفتگی (indentation) داشته باشد.
🔹 مثال ساده
age = 20

if age >= 18:
print("You are an adult.")

چون:
20 >= 18 → True

خروجی:
You are an adult.

🔹 else
اگر شرط if برابر False باشد، کد داخل else اجرا می‌شود:
age = 15

if age >= 18:
print("You are an adult.")
else:
print("You are not an adult.")

خروجی:
You are not an adult.

ساختار:
if condition:
code
else:
code

⚠️ بعد از else هم باید : قرار بگیرد.
🔹 یک مثال واقعی
score = 75

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

خروجی:
Passed

⚠️ = و == را اشتباه نکن
age = 20

= یعنی قرار دادن مقدار.
اما:
age == 20

یعنی مقایسه کردن.
مثلاً:
if age == 20:
print("Age is 20")

🧠 خلاصه
if    → اگر شرط درست باشد
else → اگر شرط درست نباشد
: → شروع بلوک
indentation → کد داخل بلوک

🎯 تمرین
برنامه‌ای بنویس که اگر score حداقل 50 بود، Passed و در غیر این صورت Failed را چاپ کند:
score = 40

پست ۳۲ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۳۳
حالت جایگزین در شرط | else
در پست قبل با if آشنا شدیم.
با else مشخص می‌کنیم اگر شرط if False بود، چه کدی اجرا شود.
🔹 ساختار
if condition:
code
else:
code

دقت کن:
بعد از if و else علامت : قرار می‌گیرد.
کدهای داخل هر بلوک باید تورفتگی (indentation) داشته باشند.
🔹 مثال ساده
age = 15

if age >= 18:
print("You are an adult.")
else:
print("You are not an adult.")

خروجی:
You are not an adult.

🔹 مثال با score
score = 40

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

خروجی:
Failed

🔹 تمرین تعاملی با input()
حالا برنامه را طوری بنویسیم که خود کاربر نمره را وارد کند:
score = int(input("Enter your score: "))

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

مثلاً:
Enter your score: 75
Passed

یا:
Enter your score: 40
Failed

اینجا:
input() → دریافت ورودی
int() → تبدیل ورودی به عدد صحیح
if → بررسی شرط
else → حالت مخالف

⚠️ نکته مهم
else شرط ندارد.
if age >= 18:
print("Adult")
else:
print("Not adult")

اگر شرط if درست نباشد، else اجرا می‌شود.
🎯 تمرین
برنامه‌ای بنویس که سن را از کاربر بگیرد:
age = int(input("Enter your age: "))

اگر سن ۱۸ یا بیشتر بود:
Adult

در غیر این صورت:
Not adult

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