مسار بايثون· الخطوة 11 من 21
المعاملات الشرطية والمعاملات المنطقية في بايثون Python
شرح المعاملات الشرطية والمعاملات المنطقية في بايثون: معاملات المقارنة، و and و or و not، وجدول الحقيقة، والأولوية، والمعامل الشرطي بأمثلة تشغّلها.
حكم المباراة لا يحتسب الهدف إلا إذا دخلت الكرة المرمى و لم يكن هناك تسلّل. وبوّابة اللعبة تُفتح إذا كان معك مفتاح أو 50 قطعة نقدية. هذه القرارات تُبنى على أسئلة صغيرة تُربط ببعضها. في هذا الدرس ستتعلّم الأدوات التي تصنع هذه الأسئلة وتربطها في بايثون.
🎯 ماذا ستتعلم؟
بنهاية هذا الدرس ستكون قادرًا على:
- استخدام المعاملات الشرطية (معاملات المقارنة) الستة، ومنها المقارنة المتسلسلة مثل
12 <= age <= 15. - ربط الشروط بالمعاملات المنطقية
andوorوnot، وقراءة جدول الحقيقة لكل معامل. - معرفة ترتيب تنفيذ المعاملات، والتحكم فيه بالأقواس.
- كتابة شرط آمن يعتمد على التقييم المختصر.
- كتابة قرار في سطر واحد بالمعامل الشرطي
if ... else.
🧰 ماذا تحتاج قبل أن تبدأ؟
يجب أن تعرف جملة if و else كما في درس الشروط في بايثون. ويفيدك درس العمليات الحسابية في بايثون. كل الأمثلة تعمل في مترجم بايثون اونلاين بدون تثبيت.
الفكرة ببساطة
تخيّل غرفة فيها مصباح واحد ومفتاحان على الجدار. في غرفة، لا يضيء المصباح إلا إذا شغّلت المفتاحين معًا. وفي غرفة أخرى، يكفي مفتاح واحد ليضيء.
كل مفتاح هنا سؤال جوابه نعم أو لا: True أو False. والمعامل (operator) هو رمز أو كلمة تعمل على قيم وتعطيك نتيجة جديدة.
في هذا الدرس نوعان من المعاملات:
- المعاملات الشرطية، ويسمّيها كثيرون معاملات المقارنة (comparison operators). تطرح سؤالًا واحدًا، مثل: هل 85 أكبر من 50؟
- المعاملات المنطقية (logical operators). تربط أكثر من سؤال في قرار واحد، مثل المفتاحين في الغرفة.
الخطوة 1: المعاملات الشرطية (معاملات المقارنة)
معامل المقارنة يقارن بين قيمتين، ويعطيك دائمًا قيمة منطقية (boolean): True أو False. في بايثون ستة معاملات للمقارنة:
| المعامل | معناه | مثال | النتيجة |
|---|---|---|---|
== |
يساوي | 7 == 7 |
True |
!= |
لا يساوي | 7 != 7 |
False |
> |
أكبر من | 9 > 4 |
True |
< |
أصغر من | 9 < 4 |
False |
>= |
أكبر من أو يساوي | 5 >= 5 |
True |
<= |
أصغر من أو يساوي | 6 <= 5 |
False |
لنقارن درجتك في اختبار العلوم بدرجة صديقك:
my_score = 85
friend_score = 92
print(my_score == friend_score)
print(my_score != friend_score)
print(my_score > friend_score)
print(my_score < friend_score)
print(my_score >= 85)
print(my_score <= 80)
False
True
False
True
True
False
لاحظ السطر my_score >= 85. الدرجة تساوي 85، فالجواب True لأن المعامل يقبل حالة التساوي.
المقارنة تعمل مع النصوص أيضًا. هنا نتحقّق من كلمة مرور:
password = "tegdar123"
print(password == "tegdar123")
print(password == "Tegdar123")
print(len(password) >= 8)
True
False
True
السطر الثاني أعطى False لأن بايثون تفرّق بين الحرف الكبير T والحرف الصغير t.
الخطوة 2: المقارنة المتسلسلة
هل عمرك بين 12 و 15؟ في الرياضيات تكتب ذلك هكذا: 12 ≤ العمر ≤ 15. وبايثون تسمح لك بالكتابة نفسها تقريبًا، وهذا اسمه المقارنة المتسلسلة (chained comparison).
age = 13
print(12 <= age <= 15)
temperature = 41
print(20 <= temperature <= 30)
True
False
السطر 12 <= age <= 15 يعني “هل 12 أصغر من أو يساوي العمر، و هل العمر أصغر من أو يساوي 15؟”. درجة الحرارة 41 أكبر من 30، فلم يتحقّق الشرط الثاني.
الخطوة 3: المعامل and يحتاج الشرطين معًا
الكلمة and تعني “و”. لا تعطي True إلا إذا كان الطرفان True. هذا هو جدول الحقيقة (truth table) للمعامل and، وهو جدول يعرض النتيجة لكل الاحتمالات:
| الطرف الأول | الطرف الثاني | النتيجة |
|---|---|---|
True |
True |
True |
True |
False |
False |
False |
True |
False |
False |
False |
False |
المدرسة تمنح شهادة التفوّق لمن تكون درجته 85 فأكثر و حضوره 90% فأكثر:
grade = 88
attendance = 95
if grade >= 85 and attendance >= 90:
print("مبروك! حصلت على شهادة التفوّق 🏅")
else:
print("أنت قريب، استمر")
مبروك! حصلت على شهادة التفوّق 🏅
جرّب أن تغيّر attendance إلى 80. سيصبح أحد الطرفين False، فتتحوّل النتيجة كلها إلى False.
الخطوة 4: المعامل or يكتفي بشرط واحد
الكلمة or تعني “أو”. تعطي True إذا تحقّق طرف واحد على الأقل، ولا تعطي False إلا إذا كان الطرفان False.
| الطرف الأول | الطرف الثاني | النتيجة |
|---|---|---|
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
False |
في لعبتك، بوّابة المستوى التالي تُفتح بمفتاح أو بخمسين قطعة نقدية:
has_key = False
coins = 70
if has_key or coins >= 50:
print("فُتحت البوّابة! ادخل المستوى التالي")
else:
print("تحتاج مفتاحًا أو 50 قطعة نقدية")
فُتحت البوّابة! ادخل المستوى التالي
ليس معك مفتاح، لكن معك 70 قطعة. طرف واحد يكفي، فانفتحت البوّابة.
الخطوة 5: المعامل not يقلب الجواب
الكلمة not تعني “ليس”. تعمل على قيمة واحدة فقط وتقلبها: not True تصبح False، و not False تصبح True.
is_raining = False
print(not is_raining)
if not is_raining:
print("الجو مناسب لمباراة كرة القدم ⚽")
True
الجو مناسب لمباراة كرة القدم ⚽
اقرأ الشرط بصوت عالٍ: “إذا كانت السماء لا تمطر”. هكذا تفهمه بسهولة.
الخطوة 6: من يُنفَّذ أولًا؟ أولوية المعاملات
في الحساب، الضرب يُنفَّذ قبل الجمع. والمعاملات المنطقية لها ترتيب أيضًا، اسمه الأولوية (precedence):
- العمليات الحسابية مثل
+و*. - معاملات المقارنة مثل
==و>. not.and.orفي النهاية.
انظر كيف تغيّر الأقواس النتيجة:
print(True or False and False)
print((True or False) and False)
print(not 5 > 3)
True
False
False
في السطر الأول نفّذت بايثون False and False أولًا، فصارت False، ثم True or False فصارت True. في السطر الثاني أجبرتها الأقواس على البدء بـ or. وفي السطر الثالث نُفّذت المقارنة 5 > 3 أولًا، ثم قلبتها not.
نصيحة: عندما تخلط and و or في شرط واحد، ضع أقواسًا دائمًا. الكود يصبح أوضح لك ولمن يقرؤه بعدك.
الخطوة 7: التقييم المختصر يحمي برنامجك
بايثون ذكية. في A and B، إذا كان A هو False، فهي تعرف أن النتيجة False ولا تنظر إلى B أصلًا. وفي A or B، إذا كان A هو True، تتوقّف فورًا. هذا اسمه التقييم المختصر (short-circuit evaluation).
لماذا يهمّك؟ لأنه يمنع الأخطاء. القسمة على صفر تُوقف البرنامج بخطأ ZeroDivisionError، لكن انظر:
slices = 8
friends = 0
if friends > 0 and slices / friends >= 2:
print("كل صديق يأخذ قطعتين على الأقل 🍕")
else:
print("لا يوجد أصدقاء لنقسم عليهم البيتزا")
لا يوجد أصدقاء لنقسم عليهم البيتزا
الشرط friends > 0 أعطى False، فلم تنفّذ بايثون القسمة أبدًا. لهذا ضع الفحص الآمن أولًا، والعملية الخطرة بعده.
الخطوة 8: المعامل الشرطي في سطر واحد
أحيانًا تريد أن تختار بين قيمتين فقط. بدل أربعة أسطر من if و else، تستطيع كتابة سطر واحد. هذا اسمه المعامل الشرطي (conditional expression)، ويسمّيه البعض المعامل الثلاثي (ternary operator).
score = 74
status = "ناجح ✅" if score >= 50 else "يحتاج مراجعة 📖"
print(status)
ناجح ✅
اقرأه هكذا: “القيمة هي ناجح إذا كانت الدرجة 50 فأكثر، وإلّا فهي يحتاج مراجعة”.
🚀 للمتقدمين:
andوorلا تعيدان دائمًاTrueأوFalse، بل تعيدان أحد الطرفين. القيم “الفارغة” مثل""و0و[]تُعامل كأنهاFalse. لذلكname or "ضيف"تعيد"ضيف"إذا كان الاسم فارغًا. جرّب:name = ""ثمprint(name or "ضيف"). وهناك قاعدة مفيدة اسمها قانون دي مورغان:not (A and B)تساوي(not A) or (not B). جرّبها بنفسك على كل احتمالات جدول الحقيقة.
⚠️ أخطاء شائعة
الخطأ 1: نسيان تكرار المقارنة بعد or
❌ هذا الكود يطبع “عطلة” كل يوم، حتى الأحد:
day = "الأحد"
if day == "الجمعة" or "السبت":
print("عطلة")
بايثون تقرأه هكذا: (day == "الجمعة") or ("السبت"). والنص غير الفارغ "السبت" يُعامل كأنه True، فالشرط يتحقّق دائمًا.
✅ كرّر المقارنة كاملة في كل طرف:
day = "الأحد"
if day == "الجمعة" or day == "السبت":
print("عطلة")
else:
print("يوم دراسة")
يوم دراسة
الخطأ 2: استخدام رموز لغات أخرى
❌ في لغات مثل جافاسكريبت تُكتب “و” بالرمز &&. في بايثون هذا خطأ في الصياغة (SyntaxError):
if age > 12 && has_ticket:
print("تفضّل بالدخول")
✅ في بايثون تُكتب الكلمات نفسها بالإنجليزية: and و or و not.
age = 14
has_ticket = True
if age > 12 and has_ticket:
print("تفضّل بالدخول")
تفضّل بالدخول
الخطأ 3: علامة = واحدة بدل ==
❌ علامة واحدة تعني “ضع القيمة”، وليست سؤالًا. لذلك هذا الكود يعطي SyntaxError:
if score = 100:
print("علامة كاملة")
✅ استخدم علامتين == لتسأل “هل يساوي؟”:
score = 100
if score == 100:
print("علامة كاملة 🌟")
علامة كاملة 🌟
🧪 جرّب بنفسك
التحدي 1: تذكرة السينما المخفّضة
السينما تعطي تذكرة مخفّضة لمن عمره أقل من 12 أو 60 فأكثر. اكتب الشرط الذي يطبع “تذكرة مخفّضة” أو “تذكرة عادية”.
age = 65
# اكتب الشرط هنا باستخدام or
print(age)
65
💡 اضغط لرؤية الحل
age = 65
if age < 12 or age >= 60:
print("تذكرة مخفّضة")
else:
print("تذكرة عادية")
تذكرة مخفّضة
التحدي 2: كلمة مرور قوية
كلمة المرور مقبولة إذا كان طولها 8 أحرف فأكثر و لم تكن مساوية لاسم المستخدم. اطبع “كلمة مرور مقبولة” أو “اختر كلمة مرور أقوى”.
username = "salem2013"
password = "salem2013"
# اكتب الشرط هنا باستخدام and و !=
print(len(password))
9
💡 اضغط لرؤية الحل
username = "salem2013"
password = "salem2013"
if len(password) >= 8 and password != username:
print("كلمة مرور مقبولة")
else:
print("اختر كلمة مرور أقوى")
اختر كلمة مرور أقوى
التحدي 3: هل السنة كبيسة؟
السنة الكبيسة فيها 29 يومًا في فبراير. تكون السنة كبيسة إذا قبلت القسمة على 4 ولم تقبل القسمة على 100، أو إذا قبلت القسمة على 400. استخدم باقي القسمة % والأقواس، ثم اطبع True أو False لكل سنة.
year = 2028
# اكتب شرط السنة الكبيسة هنا
print(year % 4)
0
💡 اضغط لرؤية الحل
for year in [2028, 2100, 2000, 2026]:
is_leap = (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
print(year, is_leap)
2028 True
2100 False
2000 True
2026 False
استخدمنا حلقة for لنفحص أربع سنوات مرّة واحدة. إن لم تتعلّمها بعد، افحص كل سنة وحدها بتغيير قيمة year.
✅ اختبر نفسك
-
ماذا يطبع
print(False or True and False)؟- أ)
True - ب)
False - ج) خطأ
- أ)
-
عندك
x = 0. هل يسبّب الشرطx != 0 and 10 / x > 1خطأ القسمة على صفر؟- أ) نعم
- ب) لا
-
صح أم خطأ:
not (3 == 3)نتيجتهاTrue.
💡 اضغط لرؤية الإجابات
- ب)
False. تُنفَّذTrue and Falseأولًا فتصبحFalse، ثمFalse or FalseتصبحFalse. - ب) لا. الطرف الأول
x != 0أعطىFalse، فتوقّفتandولم تنفّذ القسمة. - خطأ.
3 == 3تعطيTrue، وnotتقلبها إلىFalse.
❓ أسئلة شائعة عن المعاملات المنطقية في بايثون
ما الفرق بين المعاملات الشرطية والمعاملات المنطقية في بايثون؟
المعاملات الشرطية (معاملات المقارنة) مثل == و > تقارن قيمتين وتعطي True أو False. أما المعاملات المنطقية and و or و not فتربط نتائج هذه المقارنات في قرار واحد.
كم عدد المعاملات المنطقية في بايثون؟
ثلاثة: and و or و not. وتُكتب كلمات إنجليزية صغيرة الحروف، لا رموزًا مثل && و ||.
ما هو جدول الحقيقة؟
جدول يعرض نتيجة المعامل المنطقي لكل الاحتمالات. مع and تكون النتيجة True فقط عندما يكون الطرفان True. ومع or تكون False فقط عندما يكون الطرفان False.
أيهما يُنفَّذ أولًا: and أم or؟
تُنفَّذ not أولًا، ثم and، ثم or. وكل معاملات المقارنة تُنفَّذ قبلها جميعًا. استخدم الأقواس لتغيير الترتيب أو لتوضيحه.
ما الفرق بين == و is في بايثون؟
== تسأل: هل القيمتان متساويتان؟ أما is فتسأل: هل هما الشيء نفسه في الذاكرة؟ للمقارنة العادية استخدم == دائمًا، واترك is لفحص None مثل x is None.
📝 الخلاصة
- المعاملات الشرطية (معاملات المقارنة) الستة
==و!=و>و<و>=و<=تعطيTrueأوFalse. andتحتاج الطرفين، وorتكتفي بطرف واحد، وnotتقلب النتيجة.- الأولوية: المقارنة، ثم
not، ثمand، ثمor. والأقواس تحسم أي شك. - التقييم المختصر يوقف الفحص مبكرًا، فضع الشرط الآمن أولًا.
- المعامل الشرطي
A if condition else Bيختار قيمة في سطر واحد.
⏭️ الخطوة التالية
صار برنامجك يتّخذ قرارات مركّبة ودقيقة. في الدرس القادم ستتعلّم الحلقات في بايثون، وسترى كيف تستخدم هذه الشروط نفسها لتقرّر متى تتوقّف الحلقة. وإلى ذلك الحين، افتح بايثون أون لاين بالعربي واصنع جدول الحقيقة بنفسك لكل معامل.
📚 المصدر: محتوى أصلي من فريق تقدر، اعتمادًا على توثيق بايثون الرسمي للعمليات المنطقية.