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

4.1 القيم المنطقية

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على:

  • شرح قيمة منطقية.
  • استخدام مُتغيِّرات من نوع bool لتخزين القيم المنطقية.
  • توضيح كيفية تحويل الأعداد الصحيحة، والأعداد العشرية، والسلاسل النصية إلى قيم منطقية.
  • توضيح كيفية تحويل القيم المنطقية إلى أعداد صحيحة، وأعداد عشرية، وسلاسل نصية.
  • استخدام عوامل المقارنة لمقارنة الأعداد الصحيحة، والأعداد العشرية، والسلاسل النصية.

نوع البيانات bool

غالبًا ما يطرح الناس أسئلة ثنائية مثل أسئلة نعم/لا أو صواب/خطأ. مثال: «هل تحب الأناناس على البيتزا؟» أو «صواب أم خطأ: أنا أحب الأناناس على البيتزا.» الإجابة هي قيمة منطقية، مما يعني أن القيمة إما صواب أو خطأ. يمثل نوع منطقي (bool)، الذي يرمز إلى المنطق (Boolean)، قيمة ثنائية إما صواب أو خطأ. True و False كلمتان محجوزتان، وتُكتبان بحرف أول كبير.

نقطة تحقق

مثال: إشارة عبور المشاة

مفاهيم تطبيقية

استخدام المُتغيِّرات المنطقية

تأمل الشِفرة التالية:

    is_fruit = "True"
    is_vegetable = 0
    is_dessert = False
1.
ما نوع بيانات المُتغيِّر is_fruit؟
  1. منطقي
  2. عدد صحيح
  3. سلسلة نصية
2.
ما نوع بيانات المُتغيِّر is_vegetable؟
  1. منطقي
  2. عدد صحيح
  3. سلسلة نصية
3.
ما نوع بيانات المُتغيِّر is_dessert؟
  1. منطقي
  2. عدد صحيح
  3. سلسلة نصية
4.
كم عدد القيم التي يمكن أن يمثلها المُتغيِّر المنطقي؟
  1. 2
  2. 4
  3. 8
5.
أي مما يلي يمثل قيمة صالحة لمُتغيِّر منطقي؟
  1. true
  2. True
  3. 1
6.
افترض أن ما يلي أُضيف إلى الشِفرة أعلاه:
is_dessert = 0
print(type(is_dessert))
ما الناتج؟
  1. <class 'bool'>
  2. <class 'int'>
  3. Error

تحويل الأنواع باستخدام bool()

تحديد ما إذا كانت القيمة صوابًا أم خطأ مفيدٌ عند كتابة برامج تتخذ قرارات. قد يبدو تحويل أنواع البيانات إلى قيم منطقية غير بديهي في البداية — مثلاً: هل "ice cream" تساوي True؟ — إلا أنه في الواقع بسيطٌ ومباشر.

تُحوِّل bool() القيمةَ إلى قيمة منطقية، True أو False.

  • True: أي عدد غير صفري، أي سلسلة نصية غير فارغة
  • False: 0، سلسلة نصية فارغة

نقطة تحقق

تحويل الأعداد الصحيحة، والأعداد العشرية، والسلاسل النصية باستخدام bool()

مفاهيم تطبيقية

تحويل الأنواع العددية والسلاسل النصية إلى قيم منطقية

7.
bool(0.000)
  1. True
  2. False
8.
bool(-1)
  1. True
  2. False
9.
bool("")
  1. True
  2. False
10.
bool("0")
  1. True
  2. False
11.
بالنظر إلى الإدخال False، ما قيمة bool(input())؟
  1. True
  2. False

مفاهيم تطبيقية

تحويل القيم المنطقية إلى أنواع عددية وسلاسل نصية

بالنظر إلى is_on = True، ما قيمة كل تعبير؟

12.
float(is_on)
  1. 0.0
  2. 1.0
13.
str(is_on)
  1. "is_on"
  2. "True"
14.
int(is_on)
  1. 0
  2. 1

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

غالبًا ما يتعين على المبرمجين الإجابة على أسئلة مثل "هل المستخدم الحالي هو المسؤول؟" قد يرغب المبرمج في مقارنة مُتغيِّر سلسلة نصية، user، بالسلسلة النصية "admin". تُستخدم عوامل المقارنة لمقارنة القيم، وتكون النتيجة إما صوابًا أو خطأ. مثال: is_admin = (user == "admin"). تُقارن user مع "admin" باستخدام العامل ==، الذي يختبر المساواة. يُسند للمُتغيِّر المنطقي، is_admin، النتيجة المنطقية.

عوامل المقارنة الستة:

  • يساوي: ==
  • لا يساوي: !=
  • أكبر من: >
  • أصغر من: <
  • أكبر من أو يساوي: >=
  • أصغر من أو يساوي: <=

نقطة تحقق

مثال: رمي نرد d20 في لعبة الطاولة

مفاهيم تطبيقية

مقارنة القيم

لكل مُتغيِّر جديد، ما هي قيمة compare_result؟

15.
x = 14
compare_result = (x <= 13)
  1. True
  2. False
16.
w = 0
compare_result = (w != 0.4)
  1. True
  2. False
17.
v = 4
compare_result = (v < 4.0)
  1. True
  2. False
18.
y = 2
compare_result = (y > "ab")
  1. True
  2. False
  3. Error
19.
z = "cilantro"
compare_result = (z == "coriander")
  1. True
  2. False
20.
a = "dog"
compare_result = (a < "cat")
  1. True
  2. False

= مقابل ==

خطأ شائع هو استخدام = للمقارنة بدلاً من ==. مثال: is_zero = num=0 سيُسند دائمًا القيمة 0 إلى is_zero و num، بغض النظر عن القيمة الأصلية للمُتغيِّر num. يقوم العامل = بعملية الإسناد وسيعدّل المُتغيِّر. يقوم العامل == بعملية المقارنة، ولا يعدّل المُتغيِّر، وينتج True أو False.

جرّب بنفسك

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

"إنه الجمعة، أنا في حالة حب" —من أغنية "Friday I'm in Love" التي أصدرتها فرقة The Cure عام 1992.

اكتب برنامجًا يقرأ يوم الأسبوع. أسند للمُتغيِّر المنطقي، in_love، نتيجة ما إذا كان اليوم هو الجمعة أم لا.

جرّب بنفسك

الأعداد الزوجية

اكتب برنامجًا يقرأ عددًا صحيحًا ويطبع ما إذا كان العدد الصحيح زوجيًا أم لا. تذكر أن العدد يكون زوجيًا إذا كان قابلاً للقسمة على 2. لاختبار ذلك، استخدم number % 2 == 0. مثال: إذا كان الإدخال هو 6، فإن الإخراج هو "6 is even: True".