المعاملات المنطقية - الجزء الرابع
جزء من قسم الأساسيات في رحلة 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 = (experience OR degree) AND يستوفي شرط العمر; reject = not accept
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application
print(reject_application2) # True (النتيجة نفسها، لكن بمنطق مختلف)متى تُستخدم قوانين دي مورغان:
- لتسهيل قراءة الشروط السلبية
- لتبسيط التعبيرات المنطقية المعقدة
- للتحويل بين تمثيلات مختلفة للمنطق نفسه
التحدي
مبتدئأنت تساعد متجرًا للحيوانات الأليفة على إنشاء نظام لتحديد ما إذا كان بإمكانه بيع حيوان أليف لأحد العملاء.
تهيئة المتغيرات التالية:
has_licenseبالقيمةTruehas_spaceبالقيمةTruehas_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)يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات2المتغيرات
الأرقامالنصوص (String)القيم المنطقية (Boolean)قواعد التسميةالمتغيرات الفارغةمراجعة - تهيئة المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Continueمراجعة - المضروب (Factorial)دالة Rangeالحلقات المتداخلةمراجعة - Dynamic Input3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراجالإخراج مع المتغيراتالإدخالتحويل الأنواعمراجعة - حتى 120مراجعة - صح أم خطأتدرّب بنفسك: مترجم Python عبر الإنترنت