عوامل التشغيل المنطقية في بايثون ، و / أو لا (الاقتران المنطقي ، والفصل ، والنفي)

اعمال

توفر 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أسبقية المشغل

ترتيب أسبقية هذه العوامل المنطقية هو كما يلي: ليست هي الأعلى.

  1. not
  2. and
  3. 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)

قيم الإرجاع و و / ملخصة في الجدول أدناه.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

ماس كهربائى (تقييم ماس كهربائى)

كما ترى من الجدول أعلاه ، إذا كانت 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