Menu
CoddyTech
flag Ar iconالعربيةdown icon

المعاملات المنطقية - الجزء الرابع

جزء من قسم الأساسيات في رحلة Python على Coddy. الدرس 19 من 77.

عند العمل مع التعبيرات المنطقية، نحتاج أحيانًا إلى تبسيطها أو إعادة ترتيبها. وهذا مفيد بشكل خاص عند التعامل مع شروط معقدة تجمع بين عدة عوامل تشغيل and وor.

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

القانون الأول: not (A and B) هو نفسه (not A) or (not B)

لاحظ حدوث أمرين عند توزيع not على التعبير: يُنْفَى كل مُعامل (يصبح A not A، ويصبح B not B)، وينقلب العامل: يصبح and or. لا يقتصر دور not على نفي القيم؛ بل يغيّر أيضًا العامل الذي يربط بينها.

على سبيل المثال:

# لنتحقق مما إذا كان العدد ليس (بين 1 و10)
number = 15
# هذان التعبيران متكافئان:
result1 = not (number >= 1 and number <= 10)
result2 = (not number >= 1) or (not number <= 10)
print(result1)  # True
print(result2)  # True

القانون الثاني: not (A or B) يكافئ (not A) and (not B)

تنطبق هنا القاعدة نفسها ذات الخطوتين: يُنفى كل مُعامل، ويتغيّر العامل. هذه المرة تصبح or هي and. فكّر فيها بهذه الطريقة: توزيع not يقلب دائمًا and ↔ or مع نفي كل جزء.

على سبيل المثال:

# التحقق مما إذا كان الشخص ليس (طالبًا أو موظفًا)
is_student = False
is_employed = False
# هاتان العبارتان متكافئتان:
result1 = not (is_student or is_employed)
result2 = (not is_student) and (not is_employed)
print(result1)  # True
print(result2)  # True

مثال معقّد يجمع بين AND وOR: أحيانًا تحتاج إلى شروط تجمع بين كلا العاملين. إليك مثالًا عمليًا:

# التحقق مما إذا كنا لا نستطيع قبول طلب توظيف
# نرفض إذا: (لا توجد خبرة AND لا توجد شهادة) OR لا يُستوفى شرط العمر
has_experience = False
has_degree = False
meets_age = True
# شرط مركّب يستخدم كلاً من AND وOR
reject_application = (not has_experience and not has_degree) or not meets_age
print(reject_application)  # True (رُفض لعدم وجود خبرة AND عدم وجود شهادة)
# يمكن أيضًا كتابة ذلك باستخدام قوانين دي مورغان:
# القبول = (الخبرة أو الشهادة) ويفي بشرط العمر؛ الرفض = ليس القبول
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application
print(reject_application2)  # True (النتيجة نفسها، لكن بمنطق مختلف)

متى تُستخدم قوانين دي مورغان:

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

التحدي

مبتدئ

أنت تساعد متجرًا للحيوانات الأليفة على إنشاء نظام لتحديد ما إذا كان بإمكانه بيع حيوان أليف لأحد العملاء.

هيّئ المتغيرات التالية:

  • has_license بالقيمة True
  • has_space بالقيمة True
  • has_experience بالقيمة False

اكتب تعبيرات منطقية لتحديد ما إذا كان:

  • can_sell_regular_pet: يمكن للعميل شراء حيوان أليف عادي إذا كان لديه إما ترخيص أو خبرة، ويجب أن تتوفر لديه مساحة
  • can_sell_exotic_pet: يمكن للعميل شراء حيوان أليف غريب إذا كان لديه ترخيص وخبرة معًا، ويجب أن تتوفر لديه مساحة
  • cannot_sell_any_pet: لا يمكن للمتجر بيع أي حيوان أليف إذا لم يكن لدى العميل ترخيص ولا خبرة، أو لم تتوفر لديه مساحة

النتائج المتوقعة بالقيم المعطاة:

  • can_sell_regular_pet: True (لديه ترخيص ومساحة)
  • can_sell_exotic_pet: False (ليس لديه خبرة)
  • cannot_sell_any_pet: False (لديه ترخيص ومساحة)

جرّب بنفسك

# هيّئ المتغيرات

# احسب الشروط
# استبدل كل قيمة مؤقتة أدناه بالتعبير المنطقي الصحيح
can_sell_regular_pet = False
can_sell_exotic_pet = False
cannot_sell_any_pet = False

# لا تحذف الأسطر أدناه
print("Can sell regular pet:", can_sell_regular_pet)
print("Can sell exotic pet:", can_sell_exotic_pet)
print("Cannot sell any pet:", cannot_sell_any_pet)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Python عبر الإنترنت