حلقة while و break و continue في Python
في الدرس السابق استخدمنا for عندما نعرف ما سنمر عليه. لكن أحياناً لا تعرف متى ستتوقف: متى سيكتب المستخدم كلمة المرور الصحيحة؟ متى سينفد الرصيد؟ في هذا الدرس ستتعلم حلقة while، وكيف تتحكم في أي حلقة بـ break و continue.
حلقة while
Section titled “حلقة while”الكلمة while تعني «طالما». الحلقة تكرر الكود طالما الشرط صحيح:
count = 3while count > 0: print(count) count -= 1print("انطلق!")321انطلق!خطوات التنفيذ:
- هل
count > 0؟ نعم (3)، فاطبع 3 وأنقص واحداً. - هل
count > 0؟ نعم (2)، فاطبع 2 وأنقص واحداً. - وهكذا… حتى يصبح
countصفراً، فيصبح الشرطFalseوتتوقف الحلقة.
تخيّل while مثل ملء كوب ماء من الصنبور: تستمر في الملء طالما الكوب لم يمتلئ، ولا تعرف مسبقاً كم ثانية ستحتاج.
مثال: متى ينفد الرصيد؟
Section titled “مثال: متى ينفد الرصيد؟”balance = 100days = 0
while balance > 0: balance -= 30 days += 1
print(f"نفدت النقود بعد {days} أيام")نفدت النقود بعد 4 أياممعك 100 جنيه وتصرف 30 كل يوم. الحلقة تستمر طالما معك نقود، وتعدّ الأيام.
خطر الحلقة اللانهائية
Section titled “خطر الحلقة اللانهائية”إذا لم يصبح الشرط خاطئاً أبداً، تستمر الحلقة إلى الأبد:
count = 3while count > 0: print(count) # نسينا أن ننقص count!هذا البرنامج سيطبع 3 بلا توقف. إذا حدث معك هذا، اضغط Ctrl + C في الطرفية لإيقاف البرنامج.
break: اخرج من الحلقة فوراً
Section titled “break: اخرج من الحلقة فوراً”break توقف الحلقة كلها في الحال، حتى لو كان الشرط ما زال صحيحاً:
password_attempts = ["123", "abc", "secret"]
for attempt in password_attempts: if attempt == "secret": print("تم تسجيل الدخول") break print("كلمة مرور خاطئة:", attempt)كلمة مرور خاطئة: 123كلمة مرور خاطئة: abcتم تسجيل الدخولالنمط الشائع: while True مع break
Section titled “النمط الشائع: while True مع break”كثيراً ما يكتب المبرمجون حلقة «لا نهائية» عن قصد، ثم يخرجون منها بـ break عندما يتحقق شيء ما:
while True: answer = input("اكتب 'خروج' للإنهاء: ") if answer == "خروج": break print("كتبت:", answer)print("إلى اللقاء!")اكتب 'خروج' للإنهاء: أهلاًكتبت: أهلاًاكتب 'خروج' للإنهاء: خروجإلى اللقاء!هذا النمط مفيد جداً عندما تريد أن تسأل المستخدم مرة بعد مرة حتى يقرر التوقف. وستستخدمه في مشروع لعبة التخمين في آخر الكورس.
continue: تخطَّ هذه الدورة
Section titled “continue: تخطَّ هذه الدورة”continue تتخطى باقي الدورة الحالية فقط، وتنتقل مباشرة للدورة التالية:
for i in range(1, 11): if i % 2 == 0: continue # تخطَّ الأرقام الزوجية if i > 7: break # توقف بعد 7 print(i)1357الفرق بينهما مثل قائمة تشغيل الأغاني: continue تتخطى الأغنية الحالية وتكمل القائمة، و break تطفئ المشغّل تماماً.
else مع الحلقات
Section titled “else مع الحلقات”ميزة خاصة في Python: يمكنك وضع else بعد الحلقة، وتُنفّذ فقط إذا انتهت الحلقة بشكل طبيعي دون break:
for n in [3, 5, 7]: if n % 2 == 0: print("وجدنا رقماً زوجياً") breakelse: print("لا توجد أرقام زوجية")لا توجد أرقام زوجيةالحلقة مرت على كل الأرقام ولم تجد رقماً زوجياً، فلم تُنفّذ break، فنُفّذ ما في else.
جرّب بنفسك
Section titled “جرّب بنفسك”اكتب برنامج «آلة حاسبة للتوفير»: اسأل المستخدم عن المبلغ الذي يريد توفيره، وعن المبلغ الذي يوفّره كل أسبوع، ثم احسب بحلقة while عدد الأسابيع اللازمة. مثال:
ما المبلغ المطلوب؟ 500كم توفّر كل أسبوع؟ 120ستحتاج 5 أسابيعأخطاء شائعة
Section titled “أخطاء شائعة”- الحلقة اللانهائية: نسيان تعديل متغير الشرط داخل الحلقة. أوقفها بـ Ctrl + C.
- وضع break خارج حلقة:
breakوcontinueتعملان داخل الحلقات فقط، وإلا يظهرSyntaxError. - الخلط بين break و continue:
breakتُنهي الحلقة، وcontinueتتخطى دورة واحدة فقط.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
متى تتوقف حلقة while؟
while تستمر طالما الشرط صحيح، وتتوقف عندما يصبح خاطئاً أو عند تنفيذ break.
سؤال
ماذا تفعل continue داخل الحلقة؟
continue تقفز إلى الدورة التالية مباشرة، أما break فتُنهي الحلقة.
الخلاصة
Section titled “الخلاصة”while شرط:تكرر الكود طالما الشرط صحيح.- غيّر متغير الشرط داخل الحلقة لتتجنب الحلقة اللانهائية، وأوقفها بـ Ctrl + C عند الحاجة.
breakتُنهي الحلقة فوراً، وcontinueتتخطى الدورة الحالية.- النمط
while Trueمعbreakشائع لتكرار سؤال المستخدم. elseبعد الحلقة تُنفّذ فقط إذا لم تُنفّذbreak.