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 — پست ۲۵
گرفتن ورودی از کاربر | input()
تا اینجا اطلاعات را خودمان داخل برنامه می‌نوشتیم.
با input() می‌توانیم از کاربر ورودی بگیریم.
🔹 استفاده ساده
name = input("Enter your name: ")

print(name)

مثلاً اگر کاربر بنویسد:
Ali

خروجی:
Ali

🔹 ذخیره ورودی در متغیر
مقدار برگشتی input() را می‌توانیم داخل متغیر ذخیره کنیم:
name = input("Name: ")
age = input("Age: ")

print(name)
print(age)

⚠️ نکته بسیار مهم
خروجی input() همیشه از نوع str است.
حتی اگر کاربر عدد وارد کند:
age = input("Age: ")

print(type(age))

اگر کاربر 20 وارد کند، خروجی:
<class 'str'>

یعنی 20 در اینجا رشته است، نه int.
🔹 مشکل محاسبه با input()
age = input("Age: ")

print(age + 1)

این کد خطا می‌دهد، چون age رشته است.
برای تبدیل به عدد، در پست بعد با int() و float() کار می‌کنیم.
🎯 تمرین
برنامه‌ای بنویس که:
نام کاربر را بگیرد.
سن کاربر را بگیرد.
هر دو را با print() نمایش دهد.
نوع age را با type() بررسی کند.
پست ۲۵ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۲۶
تبدیل نوع داده‌ها | int() و float()
در پست قبل دیدیم که input() همیشه یک str برمی‌گرداند.
حالا یاد می‌گیریم چطور آن را به عدد تبدیل کنیم.
🔹 تبدیل به int
age = input("Age: ")

age = int(age)

print(age)
print(type(age))

اگر کاربر 20 وارد کند:
20
<class 'int'>

🔹 تبدیل به float
برای اعداد اعشاری از float() استفاده می‌کنیم:
price = input("Price: ")

price = float(price)

print(price)
print(type(price))

اگر کاربر 19.99 وارد کند:
19.99
<class 'float'>

🔹 تبدیل مستقیم
می‌توانیم تبدیل را همان موقع دریافت ورودی انجام دهیم:
age = int(input("Age: "))
price = float(input("Price: "))

⚠️ ورودی باید قابل تبدیل باشد
این کد خطا می‌دهد:
age = int("hello")

چون "hello" یک عدد صحیح نیست.
همچنین:
number = int("10.5")

خطا می‌دهد؛ چون "10.5" یک عدد اعشاری متنی است.
برای آن باید از float() استفاده کنیم:
number = float("10.5")

🔹 یک مثال واقعی
age = int(input("Age: "))

print(f"Next year you will be {age + 1}.")

اگر کاربر 20 وارد کند:
Next year you will be 21.

🧠 خلاصه
input()       → str
int("20") → 20
float("20.5") → 20.5

🎯 تمرین
برنامه‌ای بنویس که قیمت و تعداد را از کاربر بگیرد و قیمت کل را محاسبه کند:
price = float(input("Price: "))
count = int(input("Count: "))

total = price * count

print(total)

پست ۲۶ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۲۷
تبدیل انواع داده‌ها | str()، int() و float()
تا اینجا با int() و float() آشنا شدیم.
حالا هر سه تبدیل مهم را کنار هم می‌بینیم.
🔹 تبدیل به str
با str() یک مقدار را به رشته تبدیل می‌کنیم:
number = 100

text = str(number)

print(text)
print(type(text))

خروجی:
100
<class 'str'>

🔹 تبدیل به int
text = "25"

number = int(text)

print(number)
print(type(number))

خروجی:
25
<class 'int'>

🔹 تبدیل به float
text = "25.5"

number = float(text)

print(number)
print(type(number))

خروجی:
25.5
<class 'float'>

⚠️ تبدیل همیشه ممکن نیست
مثلاً:
int("hello")

خطا می‌دهد؛ چون "hello" عدد نیست.
اما:
int("25")

درست است.
🔹 تبدیل float به int
number = 12.9

print(int(number))

خروجی:
12

int() قسمت اعشاری را حذف می‌کند؛ گرد نمی‌کند.
🧠 خلاصه
str(100)     → "100"
int("100") → 100
float("10.5") → 10.5

نوع داده قبل و بعد از تبدیل می‌تواند کاملاً متفاوت باشد.
🎯 تمرین
نوع و خروجی هرکدام را بررسی کن:
a = str(50)
b = int("50")
c = float("50")

print(a, type(a))
print(b, type(b))
print(c, type(c))

پست ۲۷ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۲۸
تبدیل به bool | تابع bool()
با bool() می‌توانیم یک مقدار را به True یا False تبدیل کنیم.
🔹 مقادیر معمولاً True
print(bool(1))
print(bool(100))
print(bool("Hello"))

خروجی:
True
True
True

🔹 مقادیر معمولاً False
چند مقدار مهم در Python به False تبدیل می‌شوند:
print(bool(0))
print(bool(""))
print(bool(None))

خروجی:
False
False
False

لیست خالی هم False است:
print(bool([]))

خروجی:
False

⚠️ نکته مهم
رشته‌ای که فقط شامل "0" باشد، خالی نیست:
print(bool("0"))

خروجی:
True

چون "0" یک رشته‌ی دارای کاراکتر است.
🔹 مثال با input()
name = input("Name: ")

print(bool(name))

اگر کاربر چیزی وارد کند:
Ali

نتیجه:
True

اما اگر ورودی خالی باشد:
False

🧠 خلاصه
bool(1)       → True
bool(0) → False

bool("Hello") → True
bool("") → False

bool([]) → False
bool(None) → False

این مفهوم بعداً در شرط‌ها (if) بسیار مهم می‌شود.
🎯 تمرین
بدون اجرا حدس بزن خروجی هر خط چیست:
print(bool(10))
print(bool(0))
print(bool("Python"))
print(bool(""))
print(bool("0"))
print(bool([]))

پست ۲۸ از دوره جامع Python 🐍
🐍 آموزش جامع Python — پست ۲۹
مقایسه مقادیر | ==، !=، > و <
تا اینجا با مقدارها و تبدیل نوع داده‌ها آشنا شدیم.
حالا یاد می‌گیریم دو مقدار را با هم مقایسه کنیم.
نتیجه‌ی مقایسه همیشه True یا False است.
🔹 برابر بودن | ==
print(10 == 10)
print(10 == 5)

خروجی:
True
False

⚠️ == برای مقایسه است.
اما = برای قرار دادن مقدار داخل متغیر است:
x = 10
print(x == 10)

🔹 نابرابر بودن | !=
print(10 != 5)
print(10 != 10)

خروجی:
True
False

یعنی:
!=  → برابر نیست

🔹 بزرگ‌تر و کوچک‌تر
print(10 > 5)
print(10 < 5)

خروجی:
True
False

عملگرها:
>  → بزرگ‌تر از
< → کوچک‌تر از

🔹 بزرگ‌تر یا مساوی | >=
print(10 >= 10)
print(10 >= 5)

هر دو True هستند.
🔹 کوچک‌تر یا مساوی | <=
print(5 <= 10)
print(10 <= 5)

خروجی:
True
False

🧠 خلاصه
==  → برابر است
!= → برابر نیست
> → بزرگ‌تر
< → کوچک‌تر
>= → بزرگ‌تر یا مساوی
<= → کوچک‌تر یا مساوی

🎯 تمرین
بدون اجرا نتیجه را حدس بزن:
x = 20

print(x == 20)
print(x != 10)
print(x > 15)
print(x < 10)
print(x >= 20)
print(x <= 19)

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