توفر Python عوامل تشغيل منطقية لإجراء عمليات منطقية (منطقية).(and
وor
وnot
)
يتم استخدامه لوصف العلاقة بين الشروط المتعددة في عبارة if.
يصف هذا القسم ما يلي.
- تداخل:
and
- إضافة منطقية:
or
- إنكار:
not
and
وor
وnot
أسبقية المشغل
بالإضافة إلى ذلك ، يتم شرح النقاط التالية على أنها تنبيهات.
- العوامل المنطقية لكائنات من نوع غير منطقي
and
وor
قيم الإرجاع هذه ليست بالضرورة من النوع المنطقي.- ماس كهربائى (تقييم ماس كهربائى)
تداخل:and
وإرجاع الناتج المنطقي لقيمتين.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
في الواقع ، غالبًا ما يتم استخدامه ليس من أجل صواب أو خطأ ، ولكن للتعبيرات الشرطية باستخدام عوامل المقارنة. لمعلوماتك ، فإن عوامل المقارنة هي كما يلي.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
ويمكن أن تكون متسلسلة على النحو التالي.
print(0 < a < 100)
# True
إضافة منطقية:or
أو تُرجع OR المنطقي للقيمتين.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
إنكار:not
not “تُرجع نفي القيمة ؛ يتم عكس الصواب والخطأ.
print(not True)
# False
print(not False)
# True
andوorوnotأسبقية المشغل
ترتيب أسبقية هذه العوامل المنطقية هو كما يلي: ليست هي الأعلى.
not
and
or
في نموذج التعليمات البرمجية التالي ، يتم تفسير التعبير أعلاه كما لو كان التعبير أدناه. نظرًا لعدم وجود مشكلة مع الأقواس الزائدة ، فقد يكون من الأسهل وصفها بوضوح في حالات مثل هذا المثال.
print(True or True and False)
# True
print(True or (True and False))
# True
إذا كنت تريد التشغيل أو قبل ذلك ، فاستخدم الأقواس ().
print((True or True) and False)
# False
<
و>
عوامل المقارنة هذه لها أسبقية أعلى من عدمها. لذلك ، فإن الأقواس ليست ضرورية لكل عملية مقارنة ، كما كان الحال في المثال أعلاه.
print(0 < a and a < 100)
# True
راجع الوثائق الرسمية أدناه للحصول على ملخص لأسبقية المشغل في Python.
العوامل المنطقية لكائنات من نوع غير منطقي
With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.
تعتبر العناصر التالية خاطئة في عمليات بايثون المنطقية.
- تم تعريف الثوابت على أنها خاطئة:
None
وfalse
- صفر في الأنواع الرقمية:
0
و0
و0j
وDecimal(0)
وFraction(0, 1)
- تسلسل فارغ أو مجموعة:
'
و()
و[]
و{}
وset()
وrange(0)
تعتبر جميع القيم الأخرى صحيحة.
يمكن استخدام دالة bool () للحصول على القيمة المنطقية للكائن. لاحظ أن السلسلة “0” أو “False” تعتبر صحيحة.
print(bool(10))
# True
print(bool(0))
# False
print(bool(''))
# False
print(bool('0'))
# True
print(bool('False'))
# True
print(bool([]))
# False
print(bool([False]))
# True
للتعامل مع “0” أو “خطأ” في سلسلة نصية كخطأ ، استخدم distutils.util.strtobool ().
andوorقيم الإرجاع هذه ليست بالضرورة من النوع المنطقي.
فيما يلي مثال على كائن آخر غير النوع المنطقي ، يظهر نتيجة كل عامل على قيمة عددية.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
كما ترون من المثال أعلاه ، و / أو في Python ، لا تُرجع صواب أو خطأ من النوع bool ، ولكن تُرجع القيمة على اليسار أو اليمين اعتمادًا على ما إذا كانت صحيحة أم خاطئة. المثال رقمي ، لكن الأمر نفسه ينطبق على الأنواع الأخرى مثل السلاسل والقوائم. بالمناسبة ، لا تُرجع صواب أو خطأ من النوع المنطقي.
تكون تعريفات قيم الإرجاع لـ و أو كما يلي.
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.
6.11. Boolean operations — Expressions — Python 3.10.1 Documentation
عندما تكون قيم التعابير اليمنى واليسرى صحيحة وخاطئة بشكل منفصل ، فمن السهل فهم قيم الإرجاع. من ناحية أخرى ، إذا كان كلاهما صحيحًا أو كان كلاهما خاطئًا ، فستختلف قيمة الإرجاع اعتمادًا على الطلب.
إذا كنت تستخدمها كتعبير شرطي في جملة if ، وما إلى ذلك ، فسيتم الحكم على النتيجة كقيمة منطقية ومعالجتها ، لذلك لا داعي للقلق بشأنها ، ولكن إذا استخدمت القيمة المعادة لمزيد من المعالجة ، بحاجة الى توخي الحذر.
x = 10 # True
y = 100 # True
print(x and y)
# 100
print(y and x)
# 10
print(x or y)
# 10
print(y or x)
# 100
x = 0 # False
y = 0.0 # False
print(x and y)
# 0
print(y and x)
# 0.0
print(x or y)
# 0.0
print(y or x)
# 0
print(bool(x and y))
# False
إذا كنت تريد معاملتها على أنها صواب أو خطأ ، فيمكنك فعل ذلك كما في المثال الأخير.bool(x and y)
قيم الإرجاع و و / ملخصة في الجدول أدناه.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
ماس كهربائى (تقييم ماس كهربائى)
كما ترى من الجدول أعلاه ، إذا كانت x خطأ في x و y ، أو إذا كانت x صحيحة في x أو y ، فإن القيمة المعادة ستكون x بغض النظر عن قيمة y.
في مثل هذه الحالة ، لا يتم تقييم y.
and
وor
لاحظ أنه إذا قمت باستدعاء وظيفة أو طريقة على الجانب الأيمن من هذه العمليات للقيام ببعض المعالجة ، فقد لا يتم تنفيذ العملية اعتمادًا على النتيجة على الجانب الأيسر.
def test():
print('function is called')
return True
print(True and test())
# function is called
# True
print(False and test())
# False
print(True or test())
# True
print(False or test())
# function is called
# True