حلقة for و range
نكرّر عددًا معروفًا من المرات بسطر واحد. ⏱ نحو 15 دقيقة.
- تكتب حلقة
forمعrange. - تحدد البداية والنهاية والخطوة في
range. - تجمع الأعداد بحلقة
for. - تختار بين
forوwhile.
١حلقة for
إذا عرفنا عدد مرات التكرار مسبقًا فالأسهل for. مثل المعلم الذي ينادي الطلاب واحدًا بعد الآخر حتى ينتهي الكشف:
for i in range(5): print("مرحبًا", i)
range(5) تعطي الأعداد 0، 1، 2، 3، 4: تبدأ من صفر، وتتوقف قبل 5. فتتكرر الحلقة 5 مرات، ويأخذ i في كل مرة العدد التالي.
٢البداية والنهاية والخطوة
| الكتابة | الأعداد | المعنى |
|---|---|---|
range(5) | 0 1 2 3 4 | من 0 حتى ما قبل 5 |
range(1, 6) | 1 2 3 4 5 | من 1 حتى ما قبل 6 |
range(2, 11, 2) | 2 4 6 8 10 | من 2، بخطوة 2 |
for n in range(1, 6): print(n)
٣المجموع بحلقة for
نجمع الأعداد من 1 إلى 10 بسطرين فقط، ولا نحتاج أن نزيد العدّاد بأنفسنا كما في while:
total = 0for n in range(1, 11): total += nprint("المجموع:", total)
٤for على حروف النص
تمرّ for أيضًا على حروف النص حرفًا حرفًا:
for letter in "سارة": print(letter)
وفي درس القوائم ستمرّ بها على قائمة أسماء أو درجات بالطريقة نفسها.
٥for أم while؟
| استخدم | عندما | مثال |
|---|---|---|
for | تعرف عدد مرات التكرار | اطبع الأعداد من 1 إلى 10 |
while | لا تعرف متى يتوقف التكرار | اطلب كلمة المرور حتى تكون صحيحة |
📎 للاستزادة (اختياري): العدّ التنازلي بـ range
الخطوة السالبة تعدّ إلى الخلف:
for n in range(5, 0, -1): print(n)
توقّع وتحقّق
ما الأعداد التي تعطيها range(3)؟
أي range تعطي 1 إلى 5؟
ما الأعداد التي تعطيها range(0, 10, 3)؟
متى نفضّل for على while؟
for للعدد المعروف.الخلاصة
for i in range(n)تكرّرnمرات، وiمن 0 إلىn - 1.range(بداية, نهاية, خطوة)، والنهاية لا تدخل.forتمرّ أيضًا على حروف النص.forعندما نعرف عدد المرات، وwhileعندما لا نعرفه.
تحدٍّ برمجي: مجموع الزوجيات
سهلاكتب برنامجًا يجمع الأعداد الزوجية من 2 إلى 20 باستخدام for، ويطبع المجموع.
- استخدم range بخطوة 2.
- ابدأ total من 0.
- اطبع: المجموع: ثم الناتج.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
total = 0💡 تلميح 1
range(2, 21, 2) تعطي 2، 4، ...، 20.حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
total = 0for n in range(2, 21, 2): total += nprint("المجموع:", total)