التحكم في الحلقة: break و continue
نتحكم في الحلقة: نوقفها مبكرًا، أو نتخطى دورة منها. ⏱ نحو 15 دقيقة.
- توقف الحلقة مبكرًا بـ
break. - تتخطى دورة بـ
continue. - تكتب حلقة
while Trueوتخرج منها بـbreak.
١break: أوقف الحلقة الآن
تبحث عن مفتاحك في الأدراج: تفتحها واحدًا بعد الآخر، وتتوقف عندما تجده، ولا تكمل بقية الأدراج. هذا ما يفعله break: يخرج من الحلقة فورًا.
for n in range(1, 50): if n % 7 == 0: print("أول عدد يقبل القسمة على 7 هو", n) break
٢continue: تخطَّ هذه الدورة
continue لا يوقف الحلقة، بل يترك الدورة الحالية فقط وينتقل إلى التالية. هنا نطبع الأعداد من 1 إلى 7 ما عدا مضاعفات 3:
for n in range(1, 8): if n % 3 == 0: continue print(n)
| الأمر | ماذا يفعل |
|---|---|
break | يخرج من الحلقة كلها |
continue | يترك الدورة الحالية ويكمل بالتالية |
٣while True مع break
أحيانًا نكرّر «بلا شرط»، ونقرّر التوقف من داخل الحلقة. نكتب while True، ونخرج بـ break:
while True: password = input("كلمة المرور: ") if password == "1234": print("تم الدخول") break print("خطأ، حاول مرة أخرى")
بدون break تصبح while True حلقة لا تنتهي، فتأكد دائمًا أن طريق الخروج موجود.
📎 للاستزادة (اختياري): جمع أعداد حتى يكتب المستخدم صفرًا
total = 0while True: n = int(input("عدد (0 للإنهاء): ")) if n == 0: break total += nprint("المجموع:", total)
توقّع وتحقّق
ماذا يفعل break؟
break يوقف الحلقة كلها.ماذا يفعل continue؟
continue تخطٍّ فقط.حلقة على 1 إلى 5 فيها if n == 3: break قبل print(n). ماذا يُطبع؟
الحلقة نفسها لكن مع continue بدل break. ماذا يُطبع؟
الخلاصة
breakيخرج من الحلقة فورًا.continueيترك الدورة الحالية ويكمل بالتالية.while Trueتحتاجbreakحتى لا تصبح حلقة لا تنتهي.
تحدٍّ برمجي: اجمع حتى الصفر
متوسطاكتب برنامجًا يقرأ أعدادًا من المستخدم ويجمعها، ويتوقف عندما يكتب 0، ثم يطبع المجموع.
- استخدم while True.
- إذا كان العدد 0 اخرج بـ break.
- اطبع: المجموع: ثم الناتج.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
total = 0while True: n = int(input("عدد: "))
💡 تلميح 1
if n == 0: break💡 تلميح 2
total += nحاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
total = 0while True: n = int(input("عدد: ")) if n == 0: break total += nprint("المجموع:", total)