Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

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

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

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

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

لاحظ حدوث أمرين عندما تقوم بتوزيع not على الـ expression: يتم نفي each معامل (A تصبح not A، وB تصبح not Bو المعامل ينقلبand تصبح or. المعامل not لا يكتفي بنفي القيم فقط؛ بل يقوم also بتبديل الـ logical operator الـ between بينهما.

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

# لنتحقق مما إذا كان العدد ليس (بين 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 يؤدي دائمًا إلى قلب andor مع نفي كل جزء.

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

# التحقق مما إذا كان الشخص ليس (طالبًا أو موظفًا)
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 = (experience OR degree) AND meets age; reject = not accept
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application

print(reject_application2)  # True (نفس النتيجة، منطق مختلف)

متى تُستخدم قوانين دي مورجان (De Morgan's Laws):

  • لجعل الشروط المنفية أسهل في القراءة
  • لتبسيط التعبيرات المنطقية المركبة (Complex logical expressions)
  • للتحويل بين التمثيلات المختلفة لنفس الـ logic
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اختبر نفسك

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

جميع دروس Fundamentals

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