آموزش جامع عملگرهای منطقی در پایتون
🎯 اهداف یادگیری
- درک مفهوم عملگرهای منطقی و کاربرد آنها
- شناخت انواع عملگرهای منطقی در پایتون
- یادگیری ترکیب عملگرهای منطقی با عملگرهای مقایسهای
- آشنایی با جدول ارزش منطقی (Truth Table)
- یادگیری ارزیابی کوتاهمدت (Short-Circuit Evaluation)
📌 مقدمهای بر عملگرهای منطقی
عملگرهای منطقی برای ترکیب عبارات شرطی و ایجاد شرایط پیچیدهتر استفاده میشوند. این عملگرها مقادیر بولین (True یا False) را پردازش کرده و نتیجه نهایی را برمیگردانند.
📌 انواع عملگرهای منطقی
پایتون سه عملگر منطقی اصلی ارائه میدهد:
# عملگر and (و منطقی)print(True and True) # خروجی: Trueprint(True and False) # خروجی: False# عملگر or (یا منطقی)print(True or False) # خروجی: Trueprint(False or False) # خروجی: False# عملگر not (نقیض منطقی)print(not True) # خروجی: Falseprint(not False) # خروجی: True
جدول عملگرهای منطقی:
عملگر | توضیح | مثال | نتیجه |
---|---|---|---|
and | اگر هر دو عملوند True باشند، True برمیگرداند | True and False | False |
or | اگر حداقل یکی از عملوندها True باشد، True برمیگرداند | True or False | True |
not | نقیض عملوند را برمیگرداند | not True | False |
📌 ترکیب عملگرهای منطقی و مقایسهای
عملگرهای منطقی معمولاً همراه با عملگرهای مقایسهای استفاده میشوند تا شرایط پیچیدهتری ایجاد کنند:
age = 25income = 50000# ترکیب چند شرط با andif age >= 18 and income > 30000: print("شما واجد شرایط وام هستید")grade = 85attendance = 90# ترکیب چند شرط با orif grade > 80 or attendance > 85: print("شما در کلاس موفق بودید")# استفاده از not برای معکوس کردن شرطis_weekend = Falseif not is_weekend: print("امروز روز کاری است")
اولویت عملگرها:
- not بالاترین اولویت را دارد
- and اولویت متوسط دارد
- or کمترین اولویت را دارد
- برای تغییر اولویت از پرانتز استفاده کنید
📌 جدول ارزش منطقی (Truth Table)
برای درک بهتر نحوه عملکرد عملگرهای منطقی، جدول ارزش آنها را بررسی میکنیم:
جدول ارزش عملگر AND:
A | B | A and B |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
جدول ارزش عملگر OR:
A | B | A or B |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
جدول ارزش عملگر NOT:
A | not A |
---|---|
True | False |
False | True |
📌 ارزیابی کوتاهمدت (Short-Circuit Evaluation)
پایتون از ارزیابی کوتاهمدت در عملگرهای منطقی استفاده میکند. این به معنی آن است که اگر نتیجه نهایی از روی اولین عملوند مشخص شود، عملوندهای بعدی ارزیابی نمیشوند:
# ارزیابی کوتاهمدت در عملگر and# اگر اولین عملوند False باشد، نتیجه قطعاً False خواهد بودprint(False and print("این چاپ نخواهد شد")) # خروجی: False# ارزیابی کوتاهمدت در عملگر or# اگر اولین عملوند True باشد، نتیجه قطعاً True خواهد بودprint(True or print("این چاپ نخواهد شد")) # خروجی: True# مثال کاربردیx = 0# از ارزیابی کوتاهمدت برای جلوگیری از خطای تقسیم بر صفر استفاده میکنیمif x != 0 and 10 / x > 2: print("شرط برقرار است")else: print("از خطای تقسیم بر صفر جلوگیری شد")
مزایای ارزیابی کوتاهمدت:
- افزایش کارایی: جلوگیری از محاسبات اضافی
- جلوگیری از خطا: جلوگیری از اجرای کدهایی که ممکن است باعث خطا شوند
- بهینهسازی: بهبود عملکرد برنامه در شرایط خاص
📌 ترکیب عملگرهای منطقی
میتوانید عملگرهای منطقی مختلف را با هم ترکیب کنید تا شرایط پیچیدهتری ایجاد کنید:
age = 25has_license = Truehas_car = False# ترکیب and و orif (age >= 18 and has_license) or has_car: print("شما میتوانید رانندگی کنید")score = 75is_absent = False# ترکیب not با سایر عملگرهاif not is_absent and score >= 60: print("شما قبول شدید")# استفاده از پرانتز برای تعیین اولویتa, b, c = True, False, Trueprint(a or b and c) # خروجی: True (and اولویت دارد)print((a or b) and c) # خروجی: True (پرانتز اولویت را تغییر داد)
نکات مهم در ترکیب عملگرها:
- همیشه از پرانتز برای مشخص کردن اولویت عملیات استفاده کنید
- کدهای پیچیده را به چند خط سادهتر تقسیم کنید
- از کامنت برای توضیح منطق شرطهای پیچیده استفاده کنید
📌 مقادیر غیربولین در عملگرهای منطقی
عملگرهای منطقی در پایتون میتوانند با انواع داده غیربولین نیز کار کنند. در این حالت، پایتون مقدار "truthy" یا "falsy" را بررسی میکند:
# مقادیر Falsy (معادل False در نظر گرفته میشوند)# False, None, 0, 0.0, '', [], {}, ()# مقادیر Truthy (معادل True در نظر گرفته میشوند)# True, اعداد غیرصفر, رشتههای غیرخالی, لیستهای غیرخالی و ...# مثالهایی با مقادیر غیربولینprint(10 and 20) # خروجی: 20 (اولین مقدار truthy را برمیگرداند)print(0 and 10) # خروجی: 0 (اولین مقدار falsy را برمیگرداند)print(10 or 20) # خروجی: 10 (اولین مقدار truthy را برمیگرداند)print(0 or 10) # خروجی: 10 (اولین مقدار truthy را برمیگرداند)print(not 0) # خروجی: True (نقیض falsy برابر True است)print(not 10) # خروجی: False (نقیض truthy برابر False است)# مثال کاربردی با رشتههاname = ""default_name = "مهمان"display_name = name or default_nameprint(display_name) # خروجی: "مهمان"
کاربردهای مقادیر غیربولین:
- مقادیر پیشفرض: استفاده از or برای تعیین مقدار پیشفرض
- اعتبارسنجی: استفاده از and برای بررسی شرایط چندگانه
- کد خلاصهتر: نوشتن کدهای کوتاهتر و خواناتر
📌 تمرینهای عملی
حالا نوبت شماست! کدهای زیر را بررسی کنید و نتیجه را پیشبینی کنید:
# تمرین ۱a = Trueb = Falseprint(not a and b)# تمرین ۲x = 10y = 20print(x > 5 and y < 30)# تمرین ۳name = ""result = name or "ناشناس"print(result)# تمرین ۴age = 17has_permission = Trueprint(age >= 18 or has_permission)