جاري تحميل المحتوى...
في الفصل السابق تعلّمت استخدام الإدخال والإخراج والعمليات والمقارنات. الآن ستستخدم نتائج المقارنات للتحكم في مسار البرنامج: إذا تحقق شرط ينفذ البرنامج مسارًا معينًا، وإذا لم يتحقق يمكنه الانتقال إلى مسار آخر. هذا هو أساس اتخاذ القرار في Python.
تنتج المقارنات قيمًا منطقية مثل True وFalse. يمكن للبرنامج استخدام هذه النتيجة ليقرر هل ينفذ مجموعة من الأوامر أم يتجاوزها.
age = 20
print(age >= 18)
المقارنة age >= 18 نتيجتها True لأن قيمة age هي 20. في هذا الفصل سنستخدم مثل هذه النتائج داخل الشروط بدل الاكتفاء بطباعتها.
ifتستخدم if لتنفيذ كود فقط عندما يكون الشرط صحيحًا.
age = 20
if age >= 18:
print("مسموح")
يفحص البرنامج الشرط age >= 18. بما أنه True، ينفذ السطر الموجود داخل كتلة if ويظهر النص "مسموح".
إذا كانت قيمة age مثلًا 15، فسيكون الشرط False ولن ينفذ السطر الموجود داخل if.
المسافة البادئة أو Indentation مهمة في Python لأنها تحدد الأسطر التابعة للشرط. السطر الذي تريد تنفيذه داخل if يجب أن يكون مزاحًا إلى الداخل بصورة متسقة.
temperature = 30
if temperature > 25:
print("الجو دافئ")
print("انتهى الفحص")
السطر الأول من print() تابع للشرط لأنه مزاح إلى الداخل. أما السطر الأخير فليس داخل الشرط، ولذلك ينفذ بعده سواء تحقق الشرط أم لا.
if مع elseتضيف else مسارًا بديلًا عندما لا يتحقق شرط if.
age = 16
if age >= 18:
print("بالغ")
else:
print("أقل من 18")
الشرط هنا False لأن 16 أصغر من 18، لذلك يتجاوز البرنامج فرع if وينفذ فرع else ويظهر "أقل من 18".
elifعندما توجد أكثر من حالة محتملة، يمكن استخدام elif بين if وelse.
score = 75
if score >= 90:
print("ممتاز")
elif score >= 60:
print("ناجح")
else:
print("يحتاج إلى مراجعة")
الشرط الأول score >= 90 غير صحيح، لذلك ينتقل البرنامج إلى elif. الشرط score >= 60 صحيح، فيظهر "ناجح".
تفحص Python فروع if وelif بالترتيب. عند العثور على أول شرط صحيح، تنفذ ذلك الفرع ولا تواصل فحص بقية الفروع في السلسلة نفسها.
score = 95
if score >= 60:
print("ناجح")
elif score >= 90:
print("ممتاز")
سيظهر "ناجح"، لأن الشرط الأول صحيح أصلًا. لن تصل Python إلى شرط elif الثاني رغم أن الدرجة تحقق هذا الشرط أيضًا. لذلك يجب ترتيب الحالات بعناية.
يمكن استخدام عوامل المقارنة التي تعلّمتها سابقًا داخل if وelif:
| العامل | المعنى |
|---|---|
== |
يساوي |
!= |
لا يساوي |
> |
أكبر من |
< |
أصغر من |
>= |
أكبر من أو يساوي |
<= |
أصغر من أو يساوي |
number = 10
if number != 0:
print("القيمة ليست صفرًا")
المقارنة number != 0 صحيحة، لذلك ينفذ البرنامج كتلة if.
and وor وnotأحيانًا يحتاج القرار إلى أكثر من مقارنة واحدة. هنا نستخدم العوامل المنطقية لبناء شروط مركبة.
andيكون الشرط المركب باستخدام and صحيحًا عندما يتحقق الشرطان معًا.
age = 20
score = 80
if age >= 18 and score >= 70:
print("مؤهل")
المقارنتان صحيحتان، لذلك تكون نتيجة الشرط المركب True ويظهر "مؤهل". لو فشل أحد الشرطين فلن تنفذ كتلة if.
orمع or يكفي أن يتحقق شرط واحد على الأقل.
day = 6
if day == 5 or day == 6:
print("عطلة")
القيمة day تساوي 6، لذلك المقارنة الثانية صحيحة، وهذا يكفي ليصبح الشرط المركب True.
notيستخدم not لعكس القيمة المنطقية. إذا كانت القيمة True تصبح False، وإذا كانت False تصبح True.
is_closed = False
if not is_closed:
print("المكان مفتوح")
قيمة is_closed هي False، ولذلك تصبح not is_closed مساوية لـTrue وتنفذ كتلة if.
يمكن جمع المقارنات مع العوامل المنطقية، واستخدام الأقواس عندما تساعد على توضيح المقصود.
age = 17
has_permission = True
if age >= 18 or has_permission:
print("يمكن المتابعة")
المقارنة الأولى غير صحيحة، لكن has_permission قيمتها True. لأن الشرط يستخدم or، يكفي تحقق الجزء الثاني كي يظهر "يمكن المتابعة".
احرص على إبقاء الشروط المركبة قصيرة وواضحة في هذه المرحلة. الهدف هو فهم طريقة اتخاذ القرار، وليس بناء تعبيرات منطقية معقدة.
input() والتحويل مع الشروطيمكن للبرنامج أن يحصل على قيمة من المستخدم، يحولها إلى نوع رقمي، ثم يستخدمها في شرط.
age = int(input("أدخل عمرك: "))
if age >= 18:
print("بالغ")
else:
print("أقل من 18")
تعيد input() قيمة نصية، لذلك يستخدم int() لتحويلها إلى عدد صحيح. بعد ذلك تقارن Python القيمة بالعدد 18 وتختار الفرع المناسب.
elifscore = float(input("أدخل الدرجة: "))
if score >= 90:
print("ممتاز")
elif score >= 60:
print("ناجح")
else:
print("يحتاج إلى مراجعة")
بعد تحويل الإدخال بواسطة float() تبدأ Python بفحص الفروع من الأعلى إلى الأسفل، وينفذ أول فرع يتحقق شرطه.
age = int(input("أدخل العمر: "))
score = int(input("أدخل الدرجة: "))
if age >= 18 and score >= 70:
print("مؤهل")
else:
print("غير مؤهل")
لا يظهر "مؤهل" إلا إذا كان العمر لا يقل عن 18 والدرجة لا تقل عن 70 معًا، لأن العامل المستخدم هو and.
يمكن وضع شرط داخل شرط آخر. يسمى ذلك Nested if أو التداخل الشرطي. نستخدمه هنا بصورة بسيطة فقط عندما يعتمد الفحص الثاني على نجاح الفحص الأول.
age = 20
has_id = True
if age >= 18:
if has_id:
print("دخول")
else:
print("أحضر الهوية")
else:
print("العمر غير كاف")
بما أن العمر يحقق الشرط الخارجي، تنتقل Python إلى الشرط الداخلي. ولأن has_id هي True، يظهر "دخول". لاحظ أن المسافة البادئة توضح أن الشرط الداخلي يقع داخل الفرع الأول.
يجب أن ينتهي سطر if أو elif أو else بالنقطتين :.
age = 20
if age >= 18:
print("بالغ")
يجب أن تكون أوامر الفرع مزاحة إلى الداخل بصورة صحيحة ومتسقة.
score = 80
if score >= 60:
print("ناجح")
print("أحسنت")
السطران المطبوعان داخل كتلة if لأنهما يستخدمان المستوى نفسه من المسافة البادئة.
= و=== للإسناد، أما == فللمقارنة.
status = 1
if status == 1:
print("نشط")
elif بطريقة غير مناسبةابدأ بالحالات الأكثر تحديدًا عندما تكون الحالات متداخلة.
score = 95
if score >= 90:
print("ممتاز")
elif score >= 60:
print("ناجح")
بهذا الترتيب تحصل الدرجة 95 على الفرع الأكثر تحديدًا أولًا.
إذا أردت مقارنة إدخال المستخدم كعدد، حوّله أولًا إلى int أو float حسب الحاجة.
age = int(input("أدخل عمرك: "))
if age >= 18:
print("بالغ")
اكتب برنامجًا يطلب عددًا صحيحًا من المستخدم، ثم يطبع "موجب" إذا كان العدد أكبر من 0، وإلا يطبع "صفر أو سالب".
اطلب من المستخدم درجة، ثم استخدم if وelif وelse لعرض "ممتاز" أو "ناجح" أو "يحتاج إلى مراجعة" وفق حدود تختارها بوضوح.
اكتب شرطًا يستخدم and ليتحقق من أن العمر لا يقل عن 18 وأن الدرجة لا تقل عن 70.
اكتب شرطًا يستخدم or ليعرض رسالة عندما تكون قيمة متغير تساوي 5 أو 6.
استخدم not مع متغير منطقي، ثم اطبع رسالة عندما تكون القيمة الأصلية False.
أنشئ تداخلًا شرطيًا بسيطًا: افحص أولًا شرط العمر، وإذا تحقق افحص متغيرًا منطقيًا ثانيًا قبل طباعة النتيجة.
if لتنفيذ كود عندما يكون الشرط True.else للمسار البديل عندما لا يتحقق الشرط السابق.elif لفحص حالات إضافية بالترتيب.if / elif / else.== و!= و> و< و>= و<= داخل الشروط.and يتطلب تحقق الشرطين، وor يتطلب تحقق شرط واحد على الأقل، وnot يعكس القيمة المنطقية.input() والتحويل والمقارنة والشروط لبناء برنامج يتفاعل مع إدخال المستخدم.أصبحت الآن قادرًا على جعل البرنامج يختار بين مسارات مختلفة. في الفصل التالي ستتعلّم كيف تجعل البرنامج يعيد تنفيذ أوامر بطريقة منظمة عندما تحتاج إلى التكرار.
نشر في ١١ أغسطس ٢٠٢٦