Kahibaro
Discord Login Register

عملگرهای منطقی

آشنایی با عملگرهای منطقی در پایتون

در فصل شرط‌ها، یاد گرفته‌اید که با if و عملگرهای مقایسه‌ای (مثل ==، >، < و …) کار کنید. عملگرهای منطقی (Logical Operators) کمک می‌کنند چند شرط را با هم ترکیب کنید و تصمیم‌های پیچیده‌تری بگیرید.

در پایتون سه عملگر منطقی اصلی داریم:

در این فصل تمرکز ما روی این سه عملگر و نحوهٔ کار آن‌ها در شرط‌ها است.


عملگر `and` (و)

and زمانی نتیجهٔ True می‌دهد که هر دو شرط True باشند. اگر حتی یکی از شرط‌ها False باشد، نتیجه False می‌شود.

ساختار کلی:

python
شرط1 and شرط2

مثال ساده:

python
age = 20
has_id = True
if age >= 18 and has_id == True:
    print("می‌توانید وارد شوید.")

در این مثال:

مثال دیگر که یکی از شرط‌ها برقرار نیست:

python
age = 16
has_id = True
if age >= 18 and has_id == True:
    print("می‌توانید وارد شوید.")
else:
    print("اجازهٔ ورود ندارید.")

اینجا:

جدول حقیقت `and`

برای خلاصه‌کردن رفتار and:


شرط۱شرط۲نتیجهٔ شرط1 and شرط2
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

عملگر `or` (یا)

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

ساختار کلی:

python
شرط1 or شرط2

مثال:

python
is_student = True
has_discount_code = False
if is_student or has_discount_code:
    print("شما شامل تخفیف می‌شوید.")
else:
    print("تخفیفی شامل شما نمی‌شود.")

در این مثال:

مثال که هر دو شرط برقرار نیستند:

python
is_student = False
has_discount_code = False
if is_student or has_discount_code:
    print("شما شامل تخفیف می‌شوید.")
else:
    print("تخفیفی شامل شما نمی‌شود.")

اینجا:

جدول حقیقت `or`


شرط۱شرط۲نتیجهٔ شرط1 or شرط2
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

عملگر `not` (نقیض / برعکس‌کننده)

not روی یک مقدار بولی کار می‌کند و آن را برعکس می‌کند:

ساختار کلی:

python
not شرط

مثال:

python
is_raining = False
if not is_raining:
    print("می‌توانیم بیرون برویم.")
else:
    print("هوا بارانی است، بهتر است بمانیم.")

اینجا:

مثال دیگر:

python
logged_in = True
if not logged_in:
    print("لطفاً ابتدا وارد شوید.")
else:
    print("خوش آمدید!")

چون logged_in برابر True است، not logged_in برابر False می‌شود و بخش else اجرا می‌شود.


ترکیب چند عملگر منطقی

می‌توانید چندین شرط را با هم ترکیب کنید. در این حالت، ترتیب اجرای عملگرها مهم است.

ترتیب اولویت (بدون پرانتز):

  1. not
  2. and
  3. or

برای خواناتر شدن کد و جلوگیری از اشتباه، استفاده از پرانتز پیشنهاد می‌شود.

مثال:

python
age = 25
is_student = False
has_ticket = True
if (age >= 18 and has_ticket) or is_student:
    print("می‌توانید وارد سینما شوید.")
else:
    print("اجازهٔ ورود ندارید.")

تجزیهٔ شرط:

اگر پرانتز را برداریم هم در این مثال نتیجه همان است، ولی در شرایط پیچیده، نبود پرانتز می‌تواند باعث سوءتفاهم شود.

مثال: استفادهٔ هم‌زمان از `and` و `or`

python
age = 17
parent_permission = True
has_ticket = True
if (age >= 18 and has_ticket) or (age < 18 and has_ticket and parent_permission):
    print("می‌توانید وارد سینما شوید.")
else:
    print("اجازهٔ ورود ندارید.")

خواندن شرط به زبان ساده:

چند اشتباه رایج با عملگرهای منطقی

۱. اشتباه گرفتن `and` و `or`

مثال اشتباه:

python
age = 20
# هدف: اگر سن بین 18 و 30 است
if age >= 18 or age <= 30:
    print("سن شما بین ۱۸ و ۳۰ است.")

این شرط تقریباً همیشه True است، چون:

برای «بین ۱۸ و ۳۰ بودن» باید از and استفاده کنید:

python
if age >= 18 and age <= 30:
    print("سن شما بین ۱۸ و ۳۰ است.")

یا به شکل کوتاه‌تر (که در فصل عملگرهای مقایسه‌ای دیده‌اید):

python
if 18 <= age <= 30:
    print("سن شما بین ۱۸ و ۳۰ است.")

۲. مقایسهٔ بولی‌ها با `==` وقتی لازم نیست

این دو از نظر نتیجه یکسان‌اند:

python
if is_student == True:
    ...
if is_student:
    ...

کد دوم رایج‌تر و خواناتر است. مشابه همین:

python
if is_student == False:   # کمتر خوانا
    ...
if not is_student:        # خواناتر
    ...

چند تمرین پیشنهادی

(خودتان سعی کنید این‌ها را در محیط پایتون پیاده‌سازی کنید.)

  1. برنامه‌ای بنویسید که:
    • سن کاربر را بگیرد
    • اگر سن بین ۱۳ و ۱۹ بود، پیام «شما نوجوان هستید.» را چاپ کند.
    • از عملگر and استفاده کنید.
  2. برنامه‌ای بنویسید که:
    • از کاربر بپرسد دانشجو است (yes/no)
    • از او بپرسد کد تخفیف دارد یا نه (yes/no)
    • اگر یکی از آن دو yes بود، بنویسد «شما شامل تخفیف می‌شوید.»
      (از or استفاده کنید.)
  3. متغیری به نام is_night تعریف کنید (True یا False).
    • اگر شب نیست (not is_night) پیام «روشنایی روز» را چاپ کنید.
    • اگر شب است و کاربر هم خسته است (is_tired == True) پیام «بهتر است بخوابید.» را چاپ کنید. از ترکیب and و not استفاده کنید.

در فصل‌های بعدی، از همین عملگرهای منطقی در شرط‌ها و حلقه‌ها بارها استفاده خواهید کرد؛ بنابراین چند بار با آن‌ها تمرین کنید تا برایتان کاملاً طبیعی شوند.

Views: 7

Comments

Please login to add a comment.

Don't have an account? Register now!