Kodax

القيم المنطقية والمقارنات — أساسيات Python

القيم المنطقية والمقارنات

قبل أن يتخذ البرنامج قراراً، يحتاج أن يجيب عن سؤال بنعم أو لا: هل العمر أكبر من 18؟ هل كلمة المرور صحيحة؟ الإجابة قيمة من نوع bool: إما True أو False.

عوامل المقارنة

كل مقارنة ترجع True أو False:

| العامل | المعنى | مثال | الناتج |

|---|---|---|---|

| == | يساوي | 5 == 5 | True |

| != | لا يساوي | 5 != 3 | True |

| > و < | أكبر، أصغر | 2 > 7 | False |

| >= و <= | أكبر أو يساوي... | 7 >= 7 | True |

age = 20
is_adult = age >= 18
print(is_adult)          # True
print(type(is_adult))    # <class 'bool'>

مقارنة النصوص

"abc" == "abc"    # True
"Abc" == "abc"    # False (حالة الأحرف مهمة)
"a" < "b"         # True (ترتيب أبجدي)

العوامل المنطقية

| العامل | يكون True عندما... |

|---|---|

| a and b | الطرفان صحيحان |

| a or b | أحدهما على الأقل صحيح |

| not a | a خاطئ |

age, has_ticket, day = 20, True, "السبت"
can_enter = age >= 18 and has_ticket   # True
is_weekend = day == "الجمعة" or day == "السبت"

المقارنات المتسلسلة

x = 15
print(10 <= x <= 20)   # True — أوضح من (x >= 10 and x <= 20)

الانتماء: in

"a" in "cat"                 # True
3 in [1, 2, 3]               # True
"x" not in "cat"             # True

القيم "الخاطئة" (Falsy)

في الشروط، Python تعتبر هذه القيم خاطئة: False، 0، 0.0، النص الفارغ ""، القائمة الفارغة []، القاموس الفارغ {}، و None. كل ما عداها "صحيح".

name = ""
if not name:
    print("لم تدخل اسماً")

أخطاء شائعة

- استخدام = بدل == في المقارنة.

- x == 1 or 2 ← دائماً صحيحة! الصحيح: x == 1 or x == 2 أو x in (1, 2).

- مقارنة الأعداد العشرية بـ ==: 0.1 + 0.2 == 0.3 تعطي False؛ استخدم round.

تمرين

اكتب تعبيراً منطقياً يتحقق أن كلمة مرور طولها 8 أحرف على الأقل و لا تساوي "12345678"، واطبع نتيجته لعدة كلمات مرور.

age = 20
has_ticket = True

print(age >= 18)                    # True
print(age == 18, age != 18)         # False True

# and / or / not
can_enter = age >= 18 and has_ticket
print("يمكنه الدخول:", can_enter)

day = "السبت"
is_weekend = day == "الجمعة" or day == "السبت"
print("عطلة:", is_weekend)
print(not is_weekend)               # False

# مقارنة متسلسلة
score = 85
print(80 <= score < 90)             # True

# in
print("th" in "Python", 3 in [1, 2, 3])

# خطأ شائع: x == 1 or 2 دائماً صحيحة
x = 5
print(bool(x == 1 or 2))            # True (خطأ منطقي!)
print(x == 1 or x == 2)             # False (الصحيح)
print(x in (1, 2))                  # False

# القيم الخاطئة
for value in [0, "", [], None, "نص", 7]:
    print(repr(value), "←", bool(value))

# الأعداد العشرية
print(0.1 + 0.2 == 0.3)             # False
print(round(0.1 + 0.2, 2) == 0.3)   # True

# التحقق من كلمة مرور
password = "secret123"
is_valid = len(password) >= 8 and password != "12345678"
print("كلمة المرور صالحة:", is_valid)
اختبر فهمك