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

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

أهداف التعلم

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

  • تحديد الفروع التي تُتَّخذ في تعليمة if-elif و if-elif-else.
  • إنشاء تعليمة قرارات متسلسلة لتقييم شروط متعددة.

elif

أحيانًا، يعتمد قرار معقد على أكثر من شرط واحد. مثال: موقع لتخطيط السفر يراجع فترات التوقف في خط سير الرحلة. إذا كانت فترة التوقف تزيد عن 24 ساعة، يجب أن يقترح الموقع أماكن إقامة. أمّا إذا كانت فترة التوقف أقل من ساعة واحدة، فيجب أن ينبّه الموقع لاحتمال فقدان رحلة ربط.

لا تضمن تعليمتان if منفصلتان أن يُتَّخذ فرع واحد فقط، وقد يؤدي ذلك إلى اتخاذ كلا الفرعين. مثال: يحاول البرنامج أدناه إضافة منحنى بناءً على درجة الاختبار المدخلة. إذا كان الإدخال 60، فستُنفَّذ كلتا تعليمتي if بشكل غير صحيح، وتكون النتيجة النهائية 75.

    score = int(input())
    if score < 70:
      score += 10
    # خطأ:
    if 70 <= score < 85:
      score += 5

يسمح ربط تعليمات القرارات باستخدام elif (اختصار لـ else if) للمبرمج بالتحقق من شروط متعددة. تقوم تعليمة elif بفحص شرط عندما يكون شرط تعليمة القرار السابقة خاطئًا. تعد تعليمة elif جزءًا من سلسلة ويجب أن تتبع تعليمة if (أو elif).

قالب تعليمة if-elif:

    # التعليمات السابقة

    if condition:
      # الجزء الرئيسي
    elif condition:
      # الجزء الرئيسي
    
    # التعليمات اللاحقة

نقطة تحقق

مثال: ميزات البث المباشر

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

استخدام elif

1.
املأ الفراغ لتنفيذ Body 2 عندما يكون condition_1 خاطئًا و condition_2 صحيحًا.
if condition_1:
  # الجزء الرئيسي 1
__ condition_2:
  # الجزء الرئيسي 2
  1. if
  2. elif
  3. else
2.
بافتراض أن x = 42 و y = 0، ما القيمة النهائية لـ y؟
if x > 44:
  y += 2
elif x < 50:
  y += 5
  1. 2
  2. 5
  3. 7
3.
ما الشروط التي تكمل الشِفرة بحيث إذا كانت x أقل من 0، تُنفَّذ Body 1، وإلا إذا كانت x تساوي 0، تُنفَّذ Body 2.
if _________:
  # الجزء الرئيسي 1
elif _________:
  # الجزء الرئيسي 2
  1. x < 0
    x == 0
  2. x == 0
    x < 0
  3. x <= 0
    [no condition]
4.
أي مما يلي يمثل تعليمة قرارات متسلسلة صالحة؟
  1. if condition_1:
      # الجزء الرئيسي 1
    elif condition_2:
      # الجزء الرئيسي 2
    
  2. if condition_1:
      # الجزء الرئيسي 1
      elif condition_2:
        # الجزء الرئيسي 2
    
  3. elif condition_1:
      # الجزء الرئيسي 1
    if condition_2:
      # الجزء الرئيسي 2
    
5.
بافتراض أن attendees = 350، ما القيمة النهائية لـ rooms؟
rooms = 1
if attendees >= 100:
  rooms += 3
if attendees <= 200:
  rooms += 7
elif attendees <= 400:
  rooms += 14
  1. 4
  2. 15
  3. 18

تعليمات if-elif-else

يمكن ربط تعليمات elif مع تعليمة if-else لإنشاء تعليمة قرار أكثر تعقيدًا. مثال: يعرض برنامج حركات الشطرنج الممكنة اعتمادًا على نوع القطعة. إذا كانت القطعة بيدقًا، فاعرض التحرك خطوة واحدة (أو اثنتين) للأمام. وإلا إذا كانت القطعة فيلًا، فاعرض الحركات القطرية. وإلا إذا . . . (أكمل لبقية القطع).

نقطة تحقق

مثال: حركات الشطرنج الممكنة

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

استخدام elif ضمن تعليمات if-elif-else

6.
بافتراض أن hour = 12، ما الذي سيتم طباعته؟
if hour < 8:
  print("Too early")
elif hour < 12:
  print("Good morning")
elif hour < 13:
  print("Lunchtime")
elif hour < 17:
  print("Good afternoon")
else:
  print("Too late")
  1. Good morning
  2. Lunchtime
  3. Good afternoon
  4. Too late
7.
أين يمكن إضافة تعليمة elif؟
_1_
if condition:
  # الجزء الرئيسي
  _2_
elif condition:
  # الجزء الرئيسي
_3_
else:
  # الجزء الرئيسي
_4_
  1. 1
  2. 2
  3. 3
  4. 4
8.
بافتراض أن x = -1 و y = -2، ما القيمة النهائية لـ y؟
if x < 0 and y < 0:
  y = 10
elif x < 0 and y > 0:
  y = 20
else:
  y = 30
  1. 10
  2. 20
  3. 30
9.
كيف يمكن إعادة كتابة التعليمات التالية كتعليمة متسلسلة؟
if price < 9.99:
  order = 50
if 9.99 <= price < 19.99:
  order = 30
if price >= 19.99:
  order = 10
  1. if price < 9.99:
      order = 50
    else:
      order = 30
    order = 10
    
  2. if price < 9.99:
      order = 50
    elif price < 19.99:
      order = 30
    elif price == 19.99:
      order = 10
    
  3. if price < 9.99:
      order = 50
    elif price < 19.99:
      order = 30
    else:
      order = 10
    

جرّب بنفسك

تحويل مقاس إبرة الكروشيه

اكتب برنامجًا يقرأ مقاس إبرة كروشيه أمريكي ويحسب القطر المتري بالمليمترات. (يتم استخدام مجموعة فرعية من المقاسات.) إذا لم يتطابق الإدخال مع B-G، فيجب تعيين القطر بقيمة -1.0. مثال: إذا كان الإدخال D، يكون الإخراج "3.25 mm".

تحويلات المقاسات الأمريكية: ملم

  • B : 2.25
  • C : 2.75
  • D : 3.25
  • E : 3.5
  • F : 3.75
  • G : 4.0

جرّب بنفسك

أطوال موجات الألوان

اكتب برنامجًا يقرأ عددًا صحيحًا يمثل طول موجة الضوء المرئي بالنانومتر. اطبع اللون المقابل باستخدام النطاقات الشاملة التالية:

  • Violet: 380–449
  • Blue: 450–484
  • Cyan: 485–499
  • Green: 500–564
  • Yellow: 565–589
  • Orange: 590–624
  • Red: 625–750

افترض أن الإدخال يقع ضمن طيف الضوء المرئي، من 380 إلى 750 شاملًا.

الإدخال المعطى:

    550

الإخراج هو:

    Green