حلقة التكرار المحدد

5.2 حلقة التكرار المحدد

أهداف التعلم

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

  • شرح بنية حلقة التكرار المحدد for.
  • استخدام حلقة التكرار المحدد for لتنفيذ المهام المتكررة.

حلقة التكرار المحدد

في بايثون، يمكن أن تكون الحاوية نطاقًا من الأرقام، أو سلسلة نصية من الأحرف، أو قائمة من القيم. للوصول إلى الكائنات داخل حاوية، يمكن تصميم حلقة تكرارية لاسترداد الكائنات واحدًا تلو الآخر. تتكرر حلقة التكرار المحدد على جميع العناصر في حاوية. مثال: التكرار على قائمة الطلاب في فصل دراسي وطباعة أسماء الطلاب.

نقطة تحقق

مثال على حلقة التكرار المحدد للتكرار على كائن حاوية

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

حلقة التكرار المحدد على حاوية سلسلة نصية

يمكن اعتبار المُتغيِّر من نوع السلسلة النصية حاوية لأحرف متعددة، وبالتالي يمكن التكرار عليها. بالنظر إلى الشِفرة التالية، أجب عن الأسئلة.

    str_var = "A string"

    count = 0
    for c in str_var:
      count += 1

    print(count)
1.
ما ناتج البرنامج؟
  1. 7
  2. 8
  3. 9
2.
ما ناتج الشِفرة إذا استُبدل السطر count += 1 بـ count *= 2؟
  1. 0
  2. 16
  3. 28
3.
ما الذي سيتم طباعته إذا غُيِّرت الشِفرة على النحو التالي؟
str_var = "A string"

count = 0
for c in str_var:
  count += 1
  # سطر جديد
  print(c, end = '*')

print(count)
  1. A string*
  2. A*s*t*r*i*n*g*
  3. A* *s*t*r*i*n*g*

Range()
دالّة في حلقة التكرار المحدد

يمكن استخدام حلقة التكرار المحدد for للتكرار والعد. تُعد دالّة range() أسلوبًا شائعًا لتنفيذ العد في حلقة التكرار المحدد for. تُنشئ دالّة range() تسلسلاً من الأعداد الصحيحة بين رقمين مع حجم خطوة معيّن. هذا التسلسل العددي يشمل البداية ويستبعد النهاية من التسلسل. يمكن لدالّة range() أن تأخذ ما يصل إلى ثلاث قيم إدخال. الأمثلة مقدمة في الجدول أدناه.

دالّة Range الوصف مثال الإخراج

range(end)

  • تُنشئ تسلسلاً يبدأ من 0 حتى end.
  • حجم الخطوة: 1

range(4)

0, 1, 2, 3

range(start, end)

  • تُنشئ تسلسلاً يبدأ من start حتى end.
  • حجم الخطوة: 1

range(0, 3)

0, 1, 2

range(2, 6)

2, 3, 4, 5

range(-13, -9)

-13, -12, -11, -10

range(start, end, step)

  • تُنشئ تسلسلاً يبدأ من start حتى end.
  • حجم الخطوة: step

range(0, 4, 1)

0, 1, 2, 3

range(1, 7, 2)

1, 3, 5

range(3, -2, -1)

3, 2, 1, 0, -1

range(10, 0, -4)

10, 6, 2

جدول 5.1 استخدام دالّة range().

مثال 5.2

برنامجان يطبعان جميع مضاعفات العدد 5 الصحيحة الأقل من 50 (لاحظ إيجاز بنية
for
مقارنةً بـ
while
)

# شرط حلقة التكرار المحدد باستخدام 
# دالّة range() لطباعة 
# جميع مضاعفات 5 الأقل من 50
for i in range(0, 50, 5):
  print(i)
# تنفيذ حلقة التكرار الشرطي لطباعة 
# مضاعفات 5 الأقل من 50
    
# التهيئة
i = 0
# تحديد النطاق ليكون أقل من 50
while i < 50:
    print(i)
    i+=5
جدول 5.2

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

حلقة التكرار المحدد باستخدام دالّة range()

4.
ما هي الوسائط لدالّة range() للتسلسل المتزايد لكل عدد صحيح ثالث من 10 إلى 22 (شاملاً الطرفين)؟
  1. range(10, 23, 3)
  2. range(10, 22, 3)
  3. range(22, 10, -3)
5.
ما هي الوسائط لدالّة range() للتسلسل المتناقص لكل عدد صحيح من 5 إلى 1 (شاملاً الطرفين)؟
  1. range(5, 1, 1)
  2. range(5, 1, -1)
  3. range(5, 0, -1)
6.
ما هو التسلسل الذي يتم إنشاؤه من range(-1, -2, -1)؟
  1. 1
  2. -1, -2
  3. -2
7.
ما ناتج range(1, 2, -1)؟
  1. 1
  2. 1, 2
  3. تسلسل فارغ
8.
ما ناتج range(5, 2)؟
  1. 0, 2, 4
  2. 2, 3, 4
  3. تسلسل فارغ

جرّب بنفسك

عد المسافات

اكتب برنامجًا يستخدم حلقة التكرار المحدد for يأخذ سلسلة نصية كإدخال ويعد عدد المسافات في السلسلة النصية المقدمة. يجب أن يطبع البرنامج عدد المسافات التي تم عدها. مثال: إذا كان الإدخال "Hi everyone"، فإن البرنامج يخرج 1.

جرّب بنفسك

المتسلسلات

اكتب برنامجًا يقرأ قيمتين صحيحتين، n1 و n2، بحيث تكون n1 < n2، وينفذ المهام التالية:

  1. يطبع جميع الأعداد الزوجية بين الرقمين المقدمين (شاملاً كليهما)، بترتيب تصاعدي.
  2. يطبع جميع الأعداد الفردية بين الرقمين المقدمين (باستثناء كليهما)، بترتيب تنازلي.
    Input: 2 8
    Prints:
    2 4 6 8
    7 5 3

ملاحظة: يجب أن يُرجع البرنامج رسالة خطأ إذا كان الرقم الثاني أصغر من الأول.