دليل شامل للمشغلات المنطقية في بايثون: and, or, not

目次

1. المقدمة

يُحبّ الكثيرون بايثون لأنها لغة برمجة بسيطة وقابلة للقراءة بشكل كبير. مرونتها وبنيتها النحوية البديهية تجعلها شائعة بين الجميع من المبتدئين إلى المحترفين. من بين ميزاتها، تُعدّ العوامل المنطقية لا غنى عنها عند كتابة الشروط، الحلقات، والتعبيرات الشرطية المعقدة.

تشرح هذه المقالة بشكل شامل عوامل بايثون المنطقية — and، or، وnot — مع تغطية كل شيء من الاستخدام الأساسي إلى التقنيات المتقدمة. كما تتناول أولوية العوامل، كيفية تقييم القيم غير البوليانية، وآلية التقييم القصير (short‑circuit). أخيرًا، أدرجنا أمثلة عملية وأسئلة شائعة.

من خلال قراءة هذه المقالة، سيتمكن حتى مبتدئو بايثون من إتقان العوامل المنطقية وإجراء الشروط ومعالجة البيانات بكفاءة أكبر. نأمل أن تجدها مفيدة.

2. أنواع العوامل المنطقية في بايثون وأمثلة أساسية

لدى بايثون ثلاثة عوامل منطقية رئيسية. سنشرح أدناه سلوك كل منها واستخدامها بالتفصيل مع أمثلة ملموسة.

and (AND المنطقي)

and تُقيم إلى True فقط عندما تكون جميع الشروط True. إذا كان هناك شرط واحد على الأقل False، فإن التعبير كله يصبح False.

استخدام أساسي

x = 10
y = 20

if x > 5 and y < 30:
    print("Both conditions are met")
# Output: Both conditions are met

في هذا المثال، يتحقق كل من x > 5 و y < 30، لذا يتم تنفيذ الكود داخل جملة if.

or (OR المنطقي)

or تُقيم إلى True إذا كان أي شرط واحد على الأقل True. استخدمها عندما تريد التحقق مما إذا كان على الأقل أحد الشروط المتعددة محققًا.

استخدام أساسي

age = 65

if age < 18 or age > 60:
    print("You are eligible for a discount")
else:
    print("Regular price applies")
# Output: You are eligible for a discount

في هذا المثال، بما أن age أكبر من 60 عامًا، فإن الشرط يُقيم إلى True.

not (NOT المنطقي)

not تعكس نتيجة تقييم الشرط. فهي تحول True إلى False و False إلى True.

استخدام أساسي

is_logged_in = False

if not is_logged_in:
    print("You need to log in")
# Output: You need to log in

في هذا المثال، لأن is_logged_in تساوي False، فإن not تجعل الشرط يُقيم إلى True.

أمثلة عملية

يمكنك أيضًا دمج عدة عوامل عند وضع الشروط.

x = 15
y = 10
z = 5

if (x > y and z < y) or not (x == 15):
    print("The conditions are met")
else:
    print("The conditions are not met")
# Output: The conditions are met

عند إعداد تعبيرات شرطية معقدة مثل هذه، من المهم استخدام الأقواس لجعل ترتيب التقييم واضحًا.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. دليل شامل لأولوية عوامل بايثون المنطقية: كيفية كتابة تعبيرات شرطية دقيقة

في بايثون، عندما تُدمج عدة عوامل منطقية، يتم تقييمها وفقًا لأولوية كل عامل. فهم هذه الأولوية يساعد على تجنّب السلوك غير المقصود ويمكنك من كتابة تعبيرات شرطية دقيقة.

القواعد الأساسية للأولوية

أولوية العوامل المنطقية في بايثون هي كما يلي.

  1. not (الأعلى)
  2. and
  3. or (الأدنى)

مثال:

a = True
b = False
c = True

result = a or b and c
print(result)  # Output: True

في هذا المثال، يتم تقييم b and c أولًا، ثم يُدمج نتجته مع a or. نتيجة b and c هي False، وبالتالي يصبح a or False هو True.

تحديد الأولوية صراحةً باستخدام الأقواس

استخدام الأقواس طريقة فعّالة لجعل الأولوية صريحة، كما أنه يحسّن من قابلية قراءة الكود.

مثال:

a = True
b = False
c = True

result = (a or b) and c
print(result)  # Output: True

في هذه الحالة، يتم تقييم a or b أولًا، ثم يُطبق and c. توضح الأقواس نية البرنامج بوضوح.

ماذا يحدث إذا تجاهلت الأولوية

تجاهل الأولوية قد يؤدي إلى نتائج غير متوقعة.

مثال:

x = 10
y = 5
z = 20

# If you ignore precedence
if x > y or z < y and z > x:
    print("The condition is met")
else:
    print("The condition is not met")
# Output: The condition is met

في هذا الكود، z < y and z > x يأخذ الأولوية، لذا قد لا يتم تقييم النتيجة بشكل صحيح. استخدام الأقواس يتيح لك وضع شروط واضحة.

4. أمثلة توضح كيف تقوم عوامل المنطق في بايثون بتقييم القيم غير البوليانية

في بايثون، تُطبق عوامل المنطق ليس فقط على القيم البوليانية بل أيضًا على أنواع بيانات أخرى. فهم هذا السلوك يتيح لك كتابة كود أكثر مرونة.

قواعد التقييم للقيم غير البوليانية

القيم التالية تُعتبر ‘false’ في بايثون.

  • 0 (أنواع عددية)
  • "" (سلسلة فارغة)
  • [] (قائمة فارغة)
  • None
  • False

جميع القيم الأخرى تُعامل كـ ‘true’.

مثال:

value = 0 or "default value"
print(value)  # Output: default value

في هذا المثال، 0 تُقيم كـ ‘false’، لذا تُعاد القيمة "default value".

أمثلة عملية

تعيين قيمة احتياطية عندما لا يتحقق الشرط

user_input = ""
default_value = user_input or "No input"

print(default_value)  # Output: No input

نظرًا لأن user_input هي سلسلة فارغة (تُعتبر ‘false’)، يتم اختيار "No input" بدلاً من ذلك.

5. كيف يعمل التقييم القصير مع عوامل المنطق في بايثون

تستخدم عوامل المنطق في بايثون ميزة تُسمى “التقييم القصير”. باستخدام هذه الآلية، إذا تم تحديد النتيجة أثناء تقييم تعبير شرطي، يتم تخطي الأجزاء المتبقية وعدم تقييمها. هذا يُجنب الحساب غير الضروري ويسمح بمعالجة أكثر كفاءة.

التقييم القصير: عامل and

**and** يتوقف عن تقييم الشروط الإضافية بمجرد أن يجد شرطًا يُقيم كـ False. هذا يعتمد على الخاصية التي تجعل and تكون True فقط عندما تكون جميع الشروط True.

مثال:

def check_condition():
    print("This function was executed")
    return True

result = False and check_condition()
print(result)  # Output: False (the function is not executed)

في هذا المثال، لأن الشرط الأول هو False، لا يتم تنفيذ الدالة check_condition() وتُقيم العبارة بالكامل كـ False.

التقييم القصير: عامل or

**or** يتوقف عن تقييم الشروط الإضافية بمجرد أن يجد شرطًا يُقيم كـ True. هذا يعتمد على الخاصية التي تجعل or تكون True إذا كان أي شرط True.

مثال:

def check_condition():
    print("This function was executed")
    return True

result = True or check_condition()
print(result)  # Output: True (the function is not executed)

في هذا المثال، لأن الشرط الأول هو True، لا يتم تنفيذ الدالة check_condition() وتُقيم العبارة بالكامل كـ True.

أمثلة عملية للتقييم القصير

التقييم القصير مفيد بشكل خاص لتجنب الأخطاء وتخطي المعالجة غير الضرورية.

مثال تجنب الأخطاء

a = None

if a is not None and a.value > 10:
    print("Condition met")
else:
    print("Condition not met")

في هذا المثال، إذا كان a is not None هو False، لا يتم الوصول إلى a.value ويمكن تجنب خطأ (AttributeError). هذا مثال جيد على كيفية تحسين التقييم القصير لأمان البرنامج.

تحسينات الأداء من التقييم القصير

مثال تحسين الأداء

def expensive_computation():
    print("Running an expensive operation")
    return True

result = False and expensive_computation()
# Since the expensive operation is not executed, computational cost is reduced

هنا، لأن الشرط الأول هو False، لا يتم تنفيذ expensive_computation() ويتم تحديد النتيجة. هذا يُجنب الحساب غير الضروري ويسمح للبرنامج بالعمل بكفاءة أكبر.

6. أمثلة عملية لاستخدام عوامل المنطق في بايثون للشرطيات وعمليات القوائم

يمكن استخدام عوامل المنطق في بايثون في العديد من الحالات، مثل العبارات الشرطية، الحلقات، وتعبيرات القوائم. إليك بعض الأمثلة العملية.

الاستخدام في الفروع الشرطية

في العبارات الشرطية (عبارات if)، يمكنك دمج عدة شروط للتحكم المرن.

مثال:

temperature = 25
weather = "sunny"

if temperature > 20 and weather == "sunny":
    print("It's a great day to go out")
else:
    print("Please check the weather")

في هذا المثال، يتم طباعة “إنه يوم رائع للخروج” عندما تكون درجة الحرارة 20 درجة أو أكثر والطقس مشمس. من خلال دمج عدة شروط، يمكنك تحديد معايير مفصلة.

الاستخدام في تعبيرات القوائم

من خلال دمج عوامل المنطق في تعبيرات القوائم، يمكنك تنفيذ عمليات قائمة مختصرة وفعّالة.

مثال:

numbers = [1, 2, 3, 4, 5, 6]
filtered = [num for num in numbers if num % 2 == 0 or num > 4]
print(filtered)
# Output: [2, 4, 5, 6]

في هذا المثال، يتم تصفية القائمة للأعداد التي هي زوجية أو أكبر من 5. حتى عندما تكون الشروط معقدة، تسمح لك عوامل المنطق بالتعبير عنها باختصار.

الاستخدام في حلقات while

في حلقات while، يمكنك استخدام عوامل المنطق للتحكم في عدة شروط.

مثال:

x = 0
y = 10

while x < 5 and y > 5:
    print(f"x: {x}, y: {y}")
    x += 1
    y -= 1

في هذا المثال، تستمر الحلقة طالما أن x أقل من 5 و y أكبر من 5. حتى مع وجود عدة شروط، تسمح عوامل المنطق بالتعبير المختصر.

7. قسم الأسئلة المتكررة

يجيب على الأسئلة الشائعة التي يطرحها القراء عند استخدام عوامل المنطق في بايثون.

ما هي الأخطاء الشائعة مع عوامل المنطق في بايثون؟

  1. سوء فهم أولوية العامل
  • قد يؤدي سوء فهم أولوية تعبيرات الشرط إلى نتائج غير مقصودة. الحل: استخدم الأقواس لجعل الأولوية واضحة.
  1. التعامل مع القيم غير البوليانية
  • يتم تقييم None والقوائم الفارغة كـ “false” — إذا لم تفهم هذه القاعدة، قد يؤدي ذلك إلى سلوك غير متوقع.

نصائح للتعامل مع الشروط المعقدة باستخدام عوامل المنطق في بايثون؟

  1. قسّم الشروط إلى دوال
  • إذا كانت الشروط معقدة، قم بتقسيم الأجزاء إلى دوال لتحسين قابلية القراءة. مثال:
   def is_adult(age):
       return age >= 18

   def is_member(member_status):
       return member_status == "active"

   if is_adult(25) and is_member("active"):
       print("The member meets the conditions")
  1. قسّم الشروط إلى أجزاء
  • بدلاً من كتابة عدة شروط مرة واحدة، قم بفصلها لتسهيل الفهم.

8. الخلاصة

تُعد عوامل المنطق في بايثون أداة أساسية تُستخدم في مجموعة متنوعة من التطبيقات، مثل الفروع الشرطية، معالجة القوائم، ومنع الأخطاء. في هذه المقالة، غطينا عوامل المنطق بالتفصيل من الأساسيات إلى الاستخدام العملي وقدمنا أمثلة عملية توضح كيفية استخدامها.

من خلال فهم عوامل المنطق بشكل صحيح والاستفادة من تقييم الدائرة القصيرة (short-circuit) وقواعد الأولوية، يمكنك كتابة برامج أكثر كفاءة وأمانًا. ارجع إلى هذه المقالة وطبق هذه التقنيات بنشاط في برمجةك اليومية.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール