القيم المنطقية والمقارنات — أساسيات 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)
اختبر فهمك