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

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

جزء من قسم Fundamentals في رحلة 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 يقلب دائماً 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_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: يمكن للعميل شراء حيوان أليف عادي إذا كان لديه إما رخصة (license) أو خبرة (experience)، ويجب أن تتوفر لديه مساحة (space)
  • can_sell_exotic_pet: يمكن للعميل شراء حيوان أليف غريب إذا كان لديه كل من الرخصة (license) والخبرة (experience)، ويجب أن تتوفر لديه مساحة (space)
  • cannot_sell_any_pet: لا يمكن للمتجر بيع أي حيوان أليف إذا لم يكن لدى العميل رخصة (license) ولا خبرة (experience)، أو إذا لم تتوفر لديه مساحة (space)

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

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

ورقة مرجعية

قوانين دي مورغان — قواعد لتحويل التعبيرات المنطقية:

  • not (A and B)(not A) or (not B)
  • not (A or B)(not A) and (not B)

عند توزيع not: يتم نفي كل معامل وينعكس العامل (andor).

# مثال على القانون الأول
result = not (number >= 1 and number <= 10)
result = (not number >= 1) or (not number <= 10)  # مكافئ

# مثال على القانون الثاني
result = not (is_student or is_employed)
result = (not is_student) and (not is_employed)  # مكافئ

جرّب بنفسك

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

# حساب الشروط
can_sell_regular_pet = 
can_sell_exotic_pet = 
cannot_sell_any_pet =

# لا تحذف الأسطر أدناه
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