عملگرهای منطقی پایتون


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

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

در درس قبل با عملگرهایی آشنا شدید که ماهیتی شرطی داشتند. ماهیت شرطی بودن آنها باعث می‌شود این سوال برای برنامه نویسان ایجاد شود که آیا می‌شود از این عملگرها یا عملگرهای مشابه آنها، به صورت ترکیبی استفاده کرد؟ یعنی اینکه آیا می‌توان برای بررسی دو شرط یا وضعیت از این عبارت‌ها استفاده کرد؟

جواب بله است. عملگرهای منطقی پایتون این اجازه را به شما می‌دهند تا بتوانید عبارت‌های شرطی را ترکیب کنید. برای درک بهتر این موضوع به مثال زیر از اولین عملگر منطقی پایتون دقت کنید.

 

عملگر and

کلمه and در زبان انگلیسی به معنای "و" (va) است. در این زبان برنامه نویسی پایتون هم به همین معنا اما برای ترکیب عبارات شرطی استفاده می‌شود. 

number = 10
print(number > 5 and number < 12)

در قطعه کدی که نوشتیم، ابتدا یک متغیر به نام number تعریف کردیم و مقدار 10 را به آن تخصیص دادیم. در خط دوم داخل دستور print، دو عبارت شرطی با استفاده از عملگرهای مقایسه نوشتیم و برای ترکیب اینها از عملگر منطقی and استفاده کرده‌ایم.. ابتدا عبارت شرطی اول، سپس عملگر منطقی و در آخر عبارت شرطی دوم قرار می‌گیرید.

سوالی که در اینجا مطرح می‌شود این است که در این قطعه کد دقیقا چه اتفاقی می‌افتد؟ برای دانستن این موضوع کافی است که شروع به خواندن عبارت داخل دستور print کنید. درا ین هنگام به جای عبارت and عبارت "و" قرار دهید. جمله‌ای که می‌خوانید احتمالا به این شکل است: آیا متغیر number بزرگتر از 5 و متغیر number کوچکتر از 12 است؟ 

عبارتی که توسط دستور print در خروجی نمایش داده خواهد شد یکی از دو گزینه True یا False به معنای درست و یا غلط خواهد بود. مهم ترین نکته اینجا است که اگر هر دو طرف شرط، یعنی عبارت قبل و بعد از and، درست یا True بود، عبارت نمایش داده شده در خروجی نیز True خواهد بود. در غیر اینصورت False در خروجی برنامه نمایش داده خواهد شد. 

معنی کلمه and کمک می‌کند تا نحوه کار این عملگر را درک کنید. عبارتی که نوشتیم می‌گوید آیا شرط اول و شرط دوم درست است؟ کلمه "و" یعنی زمانی True را نمایش بده که شرط اول و شرط دوم True باشند. به یاد داشته باشید هر جا در زبان برنامه نویسی پایتون با عبارت and یا و مواجه شدید، نتیجه یا حاصل هر دو شرط باید True باشد تا ادامه شرط کار کند یا True نمایش داده بشود.

در این قطعه کد هم متغیر number از 5 بزرگتر و از 12 کوچکتر است بنابراین بعد اجرای این کد، عبارت True را خواهید دید.

 

عملگر or

عملگر منطقی or در زبان انگلیسی به معنای "یا" است و در زبان برنامه نویسی پایتون هم به معنای "یا" می‌باشد. تفاوت این عملگر با عملگر منطقی and این است که زمانی عبارت های شرطی را این عملگر ترکیب می‌کنید، تنها کافی است یکی از شرط ها True باشد تا نتیجه کلی عبارت True باشد. در غیر این صورت حاصل False به معنای غلط خواهد بود. به مثال زیر توجه کنید:

number = 10
print(number < 12 or number > 9)

در این مثال، مقدار متغیر number عدد 10 است. در دستور print عبارتی نوشتیم که دو شرط را بررسی می‌کند. برای درک بهتر این کد، بهتر است به این صورت آن را بخوانید: آیا متغیر number کوچکتر از 12 و بزرگتر از 9 است؟ همانطور که گفتیم اگر عملگر or بین دو شرط وجود داشته باشد، تنها کافی است تا حاصل یکی از شرط‌ها True باشد تا عبارتی مه print در خروجی نمایش می‌دهد، True باشد. در این کد هم شرط اول درست یا True و شرط دوم غلط یا False است. یکی از شرط‌ها True است پس دستور print عبارت True را نمایش می‌دهد. برای تمرین بهتر است حالت‌های دیگر این عملگر و عملگرهای دیگر را تایچ و اجرا کنید.

 

عملگر not

کلمه not در انگلیسی برای منفی کردن یک جمله یا کلمه استفاده می‌شود. در زبان برنامه نویسی پایتون هم کم و بیش معنای یکسانی دارد. از عملگر منطقی not برای معکوس کردن نتیجه یک عبارت یا شرط استفاده می‌شود. 

x = 8
print(not (x > 4 and x < 10))

همانطور که در قطعه کد بالا مشاهده می‌کنید، در داخل دستور print به دلیل عبارت استفاده از عملگر منطقی and ابتدا بررسی می‌شود که آیا هر دو عبارت شرطی True هستند یا خیر. در اینجا هر دو True هستن و نتیجه پرانتز داخلی، True می‌باشد. اما در این مثال، پشت پرانتز داخلی، از عملگر منطقی not استفاده شده است. همانطور که گفتیم این عملگر نتیجه عبارتی که بعد از آن ‌وجود دارد را معکوس می‌کند. پس  عملگر not حاصل پرانتز داخلی را که True بود را به False تغییر می‌دهد. بنابراین با اجرای این کد، خروجی برنامه عبارت False را نمایش می‌دهد.

اگر حاصل پرانتز داخلی، False بود، آنگاه عملگر not آن را به True تبدیل می‌کرد.

نکته: می‌توانید بیش از 2 عبارت شرطی را با استفاده از عملگرهای منطقی ترکیب کنید.