معاملات المقارنة في بايثون (Comparison Operators)

معاملات المقارنة (Comparison Operators) تُستخدم للمقارنة بين قيمتين، وتكون النتيجة دائماً قيمة منطقية (Boolean): إما True (صحيح) أو False (خطأ). هذه المعاملات هي حجر الأساس لاتخاذ القرارات في البرمجة. فبدونها، لن تتمكن برامجك من التحقق من الشروط، مثل "هل كلمة المرور صحيحة؟" أو "هل رصيد المستخدم كافٍ؟" أو "هل انتهت اللعبة؟". في هذا الدرس، سنتعرف على جميع معاملات المقارنة في بايثون وكيفية استخدامها بفعالية.

1. قائمة معاملات المقارنة

بايثون توفر 6 معاملات مقارنة أساسية. الجدول التالي يوضح كل معامل ووظيفته:

المعامل الاسم الوصف مثال النتيجة
== يساوي (Equal) هل القيمة الأولى تساوي الثانية؟ 5 == 5 True
!= لا يساوي (Not Equal) هل القيمة الأولى لا تساوي الثانية؟ 5 != 3 True
> أكبر من (Greater Than) هل القيمة الأولى أكبر من الثانية؟ 5 > 3 True
< أصغر من (Less Than) هل القيمة الأولى أصغر من الثانية؟ 5 < 8 True
>= أكبر من أو يساوي هل القيمة الأولى أكبر من أو تساوي الثانية؟ 5 >= 5 True
<= أصغر من أو يساوي هل القيمة الأولى أصغر من أو تساوي الثانية؟ 5 <= 4 False

2. المساواة (==) مقابل التعيين (=)

أحد أكثر الأخطاء شيوعاً بين المبتدئين هو الخلط بين معامل المساواة == ومعامل التعيين =.

  • = (يساوي واحد): يُستخدم لتعيين قيمة لمتغير (مثلاً: اجعل x تساوي 5).
  • == (يساوي مرتين): يُستخدم للمقارنة والسؤال (مثلاً: هل x تساوي 5؟).
equality_vs_assignment.py
# التعيين Assignment (=)
x = 10  # ضع القيمة 10 داخل المتغير x
y = 20  # ضع القيمة 20 داخل المتغير y

# المقارنة Equality (==)
print(f"هل x تساوي 10؟ {x == 10}")  # True
print(f"هل x تساوي y؟  {x == y}")   # False

# مثال عملي: التحقق من كلمة المرور
saved_password = "Secret123"
user_input = "Secret123"

if user_input == saved_password:
    print("كلمة المرور صحيحة ✓")
else:
    print("كلمة المرور خاطئة ✗")
النتيجة
هل x تساوي 10؟ True هل x تساوي y؟ False كلمة المرور صحيحة ✓

3. عدم المساواة (!=)

معامل عدم المساواة != يُرجع True إذا كانت القيمتان مختلفتين، و False إذا كانتا متساويتين.

inequality.py
current_color = "red"
target_color = "blue"

# هل اللون الحالي يختلف عن اللون المطلوب؟
if current_color != target_color:
    print("الألوان غير متطابقة، يجب التغيير!")
else:
    print("الألوان متطابقة.")

# مثال: التحقق من عدم القسمة على صفر
denominator = 0

if denominator != 0:
    print(10 / denominator)
else:
    print("خطأ: لا يمكن القسمة على صفر!")
النتيجة
الألوان غير متطابقة، يجب التغيير! خطأ: لا يمكن القسمة على صفر!

4. مقارنة الأرقام (أكبر وأصغر)

تُستخدم المعاملات >, <, >=, <= للمقارنة بين القيم الرقمية.

numeric_comparison.py
age = 18
score = 85

# أكبر من وأصغر من
print(f"هل العمر أكبر من 21؟ {age > 21}")
print(f"هل العمر أصغر من 21؟ {age < 21}")

# أكبر من أو يساوي / أصغر من أو يساوي
passing_score = 50
print(f"هل الطالب ناجح؟ {score >= passing_score}")

# مثال عملي: التحقق من الرصيد
balance = 150
price = 200

if balance >= price:
    print("عملية الشراء ناجحة")
else:
    print(f"رصيدك غير كافٍ. ينقصك {price - balance} ريال")
النتيجة
هل العمر أكبر من 21؟ False هل العمر أصغر من 21؟ True هل الطالب ناجح؟ True رصيدك غير كافٍ. ينقصك 50 ريال

5. مقارنة النصوص (String Comparison)

في بايثون، يمكنك مقارنة النصوص أيضاً! المقارنة تتم حسب الترتيب الأبجدي (Lexicographical Order) وقيم ASCII للأحرف.

string_comparison.py
# المساواة في النصوص (حساسة لحالة الأحرف)
print("apple" == "Apple")  # False (a لا تساوي A)
print("apple" == "apple")  # True

# الترتيب الأبجدي
# الحرف 'b' يأتي بعد 'a'، لذا 'banana' أكبر من 'apple'
print("banana" > "apple")  # True

# الحرف 'c' أكبر من 'b'
print("cat" > "bat")       # True

# مقارنة الأحرف الكبيرة والصغيرة
# في جدول ASCII، الأحرف الكبيرة (A-Z) لها قيم أصغر من الصغيرة (a-z)
print("A" < "a")           # True (65 < 97)

# مثال عملي: ترتيب الأسماء
name1 = "Ziad"
name2 = "Ahmed"

if name1 < name2:
    print(f"{name1} يأتي قبل {name2} في القائمة")
else:
    print(f"{name2} يأتي قبل {name1} في القائمة")
النتيجة
False True True True True Ahmed يأتي قبل Ziad في القائمة

6. المقارنة المتسلسلة (Chained Comparison)

ميزة رائعة في بايثون هي إمكانية دمج عدة مقارنات في سطر واحد، تماماً كما تفعل في الرياضيات.

chained_comparison.py
age = 25

# الطريقة التقليدية (في لغات أخرى)
# if age >= 18 and age <= 60:

# طريقة بايثون المختصرة (Chained Comparison)
if 18 <= age <= 60:
    print("العمر مقبول للوظيفة (بين 18 و 60)")
else:
    print("العمر غير مطابق للشروط")

# مثال آخر
x = 5
y = 10
z = 15

# هل x أصغر من y، و y أصغر من z؟
print(f"x < y < z: {x < y < z}")  # True

# هل القيم متساوية؟
a = b = c = 50
print(f"a == b == c: {a == b == c}")  # True
النتيجة
العمر مقبول للوظيفة (بين 18 و 60) x < y < z: True a == b == c: True

7. الفرق بين == و is

في بايثون، هناك فرق دقيق ومهم بين == و is:

  • == (Equality): تتحقق مما إذا كانت القيم متساوية.
  • is (Identity): تتحقق مما إذا كان المتغيران يشيران إلى نفس الكائن في الذاكرة.
is_vs_equal.py
# القوائم هي كائنات (Objects)
list1 = [1, 2, 3]
list2 = [1, 2, 3]  # قائمة جديدة بنفس القيم
list3 = list1      # list3 تشير لنفس مكان list1

# المقارنة بالقيم (==)
print(f"list1 == list2: {list1 == list2}")  # True (القيم متساوية)

# المقارنة بالهوية (is)
print(f"list1 is list2: {list1 is list2}")  # False (كائنان مختلفان في الذاكرة)
print(f"list1 is list3: {list1 is list3}")  # True (نفس الكائن)

# متى نستخدم is؟
# غالباً للتحقق من None أو True/False
value = None
if value is None:
    print("القيمة فارغة (None)")
النتيجة
list1 == list2: True list1 is list2: False list1 is list3: True القيمة فارغة (None)

8. مثال شامل: نظام تقييم الدخول

لنطبق ما تعلمناه في نظام يتحقق من أهلية المستخدم للدخول إلى نادٍ رياضي.

access_control.py
"""
نظام التحقق من أهلية العضوية
الشروط:
1. العمر يجب أن يكون 18 أو أكثر
2. الحالة الصحية يجب أن تكون "جيدة"
3. الرصيد يجب أن يغطي رسوم الاشتراك (100 دولار)
"""

print("--- نظام التحقق من العضوية ---")

# بيانات المستخدم (يمكنك تغييرها للتجربة)
user_age = 20
health_status = "جيدة"
user_balance = 150
membership_cost = 100

# التحقق من الشروط
is_adult = user_age >= 18
is_healthy = health_status == "جيدة"
can_afford = user_balance >= membership_cost

print(f"\nنتائج التحقق:")
print(f"- العمر مناسب (>= 18): {is_adult}")
print(f"- الحالة الصحية جيدة: {is_healthy}")
print(f"- الرصيد كافٍ: {can_afford}")

# القرار النهائي (سنتعلم دمج الشروط بـ and في الدرس القادم)
# هنا نستخدم if متداخلة للتوضيح
if is_adult:
    if is_healthy:
        if can_afford:
            print("\n✅ مبروك! تم قبول عضويتك.")
            print(f"الرصيد المتبقي: {user_balance - membership_cost} دولار")
        else:
            print(f"\n❌ عذراً، رصيدك غير كافٍ. تحتاج {membership_cost} دولار.")
    else:
        print("\n❌ عذراً، الحالة الصحية لا تسمح بالانضمام.")
else:
    print(f"\n❌ عذراً، العمر يجب أن يكون 18 عاماً على الأقل.")
النتيجة
--- نظام التحقق من العضوية --- نتائج التحقق: - العمر مناسب (>= 18): True - الحالة الصحية جيدة: True - الرصيد كافٍ: True ✅ مبروك! تم قبول عضويتك. الرصيد المتبقي: 50 دولار
💡 تذكر دائماً
  • نتيجة أي عملية مقارنة هي دائماً True أو False.
  • استخدم == للمقارنة و = للتعيين. هذا أهم فرق!
  • يمكنك استخدام المقارنة المتسلسلة 10 < x < 20 لكتابة كود أنظف.
  • مقارنة النصوص حساسة لحالة الأحرف ("A" لا تساوي "a").

الخطوة التالية

الآن بعد أن عرفت كيف تقارن القيم، كيف تدمج عدة شروط معاً؟

الدرس التالي: المعاملات المنطقية (and, or, not)
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن