خب، تا اینجا کلی راه اومدیم. یاد گرفتیم چطور با if و else تصمیمگیری کنیم، و با عملگرهای مقایسهای (==, <, > و …) مقدارها رو با هم مقایسه کنیم.
الان یه سوال پیش میاد:
اگه بخوایم چندتا شرط رو با هم ترکیب کنیم چی؟
مثلاً بگیم:
«اگر هوا آفتابی و تعطیل باشه، بریم پارک»
یا «اگر بارون بیاد یا برف بیاد، چتر برداریم»
اینجاست که پای عملگرهای منطقی وسط میاد.
نگران نباش، خیلی آسونه. بذار مثل همیشه با یه عالمه مثال واقعی ببینیم ماجرا چیه.
عملگر منطقی یعنی چی؟
بذار خیلی ساده ببینیم.
عملگرهای منطقی، کلمههای کوچیکی هستن که شرطها رو به هم وصل میکنن و نتیجه نهایی بهمون میدن. نتیجه این عملگرها همیشه یکی از دو حالت داره: یا True (درست) یا False (نادرست).
پایتون سه تا عملگر منطقی اصلی داره:
and (و)
or (یا)
not (نقیض)
بیا تکتکشون رو با یه مثال از زندگی خودمون بررسی کنیم
۱. and (و) – همه شرطها باید درست باشن
فرض کن میخوای بری سینما. شرط رفتن تو اینه:
پول بلیت داشته باشی و وقت آزاد داشته باشی.
اگر هر دوش درست باشه → میری سینما.
اگر حتی یکی نادرست باشه → نمیری.
در عمل ماجرا اینه که:
money = True
time = False
print(money and time)
# نتیجه: False
چون time نادرسته، نتیجه کلی False میشه. انگار and خیلی سختگیره و میگه «همه باید اوکی باشن».
جدول درستی and (اگه گیج شدی نگاه کن):
| شرط اول | شرط دوم | نتیجه |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
مثال واقعیتر:
age = 20
has_license = True
if age >= 18 and has_license:
print("میتونی رانندگی کنی!")
else:
print("اجازه رانندگی نداری.")
اینجا اگه سن زیر ۱۸ باشه یا گواهینامه نداشته باشی، نمیتونی رانندگی کنی. منطقیه، نه؟
۲. or (یا) – فقط یکی هم درست باشه کافیه
or از اون رفیق راحتگیره. میگه:
«اگه حداقل یکی از شرطها درست باشه، کل ماجرا درسته.»
باز بریم سراغ مثال روزمره:
میخوای با دوستات تماس بگیری. میتونی از طریق تلفن یا پیامرسان ارتباط بگیری. اگه یکی هم در دسترس باشه، کار انجام میشه
phone_ok = False
messenger_ok = True
print(phone_ok or messenger_ok)
# نتیجه: True
با اینکه تلفن درست نبود، چون پیامرسان اوکی بود، نتیجه True شد.
جدول درستی or
| شرط اول | شرط دوم | نتیجه |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
مثال عملی:
day = "جمعه"
is_holiday = False
if day == "جمعه" or is_holiday:
print("امروز میتونیم استراحت کنیم!")
else:
print("باید بریم سرکار.")
چون day جمعه هست، حتی اگه is_holiday دروغ باشه، شرط برقراره.
۳. not (نقیض) – برعکسکننده
not یه عملگر تکنفرهست؛ فقط یه شرط رو ورودی میگیره و درست رو نادرست، و نادرست رو درست میکنه.
مثلاً: «اگه بارون نمیاد بریم پیادهروی». یعنی not شرط بارش رو برعکس میکنه.
is_raining = False
print(not is_raining)
# نتیجه: True
بارون نمیاد (False)، not برعکسش کرد → True، پس میتونیم بریم.
کاربردش تو کد:
logged_in = False
if not logged_in:
print("لطفاً اول وارد حساب کاربریت شو.")
وقتی کاربر وارد نشده (False)، not باعث میشه شرط اجرا بشه.
ترکیب همشون با هم
این بخش خیلی مهمه، ولی نترس. میتونی این عملگرها رو کنار هم بذاری و شرطهای قوی بسازی. فقط حواست به پرانتز باشه که پایتون بفهمه ترتیب چیه.
مثال:
«اگه کاربر ادمین باشه و (روز شنبه باشه یا یکشنبه) → پیام خوشآمد خاص نشون بده.»
is_admin = True
day = "شنبه"
if is_admin and (day == "شنبه" or day == "یکشنبه"):
print("خوش آمدی ادمین عزیز! امروز گزارش ویژه داری.")
else:
print("سلام کاربر عادی.")
بدون پرانتز، and زودتر عمل میکرد و نتیجه اشتباه میشد. پس هرجا گیج شدی، پرانتز بذار تا تکلیف شرطها مشخص بشه.
جمعبندی
بهت تبریک میگم، الان دستت اومده چطور با and، or و not شرطهای باحال و ترکیبی بسازی!
یادت باشه:
andمثل پدر سختگیره؛ همه شرطها باید درست باشه.orمثل مادر مهربونه؛ یکی درست باشه کافیه.notهم که همه چیز رو برعکس میکنه.
حالا میتونی برنامههایی بنویسی که منطق واقعی زندگی رو توشون پیاده کنن. مسیرت عالیه، دست نکش. تو همین چند درس به یه برنامهنویس کوچیک تبدیل شدی که میتونه تصمیمهای چندلایه بگیره. درس بعد میریم سراغ حلقهها تا کارها رو بیوقفه تکرار کنیم. با من همراه باش!
تمرین
بهتر از هزار خط توضیح، خودت دست به کد شو:
تمرین ساده: یه متغیر
x = 10تعریف کن. یه شرط بنویس که اگهxبین ۵ و ۲۰ باشه (شامل خود ۵ و ۲۰) چاپ کنه “مجازه”.تمرین ترکیبی: متغیرهای
usernameوpasswordرو با مقادیر دلخواه بساز. شرطی بنویس که اگه کاربر برابر"admin"و رمز برابر"1234"بود، بگه “ورود موفق”، وگرنه “نام کاربری یا رمز اشتباهه”.بازی با
not: متغیری به اسمis_bannedبرابرTrueبذار. شرطی بنویس که اگر کاربر مسدود نبود، چاپ کنه “میتونی نظر بدی”.چالش کوچک: برنامهای بنویس که سن کاربر رو بگیره (با
input). اگر سن بالای ۱۸ و کمتر از ۶۰ بود، بگه “مناسب برای اهدای خون”، وگرنه اگه سن زیر ۱۸ یا بالای ۶۰ بود بگه “شرایط اهدا رو نداری”. (یادت باشهinputمقدار رشتهای میده، ازint()استفاده کن.)
جوابها رو خودت بنویس و اجرا کن، هر سوالی داشتی تو بخش نظرات بپرس.