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

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

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

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

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

First Law: 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)

تنطبق قاعدة الخطوتين نفسها هنا: each operand gets negated، وينقلب المعامل. هذه المرة يتحول 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

Complex example مع كلٍّ من AND وOR: أحيانًا تحتاج إلى conditions تجمع بين كلا العاملين. إليك example عمليًا:

# التحقق مما إذا كنا لا نستطيع قبول طلب وظيفة
# نرفض إذا: (لا خبرة 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:

  • لجعل conditions السلبية أسهل في القراءة
  • لتبسيط complex logical expressions
  • للتحويل بين تمثيلات different لنفس logic
challenge icon

التحدي

مبتدئ

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

Initialize المتغيرات التالية:

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

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

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

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

  • can_sell_regular_pet: True (لديه ترخيص ومساحة)
  • can_sell_exotic_pet: False (لا توجد experience)
  • 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 عبر الإنترنت