تُعدّ حلقة `while` أداةً قويةً في بايثون للتحكم في تدفق برامجك. وعلى عكس حلقات `for`، التي تتكرر على تسلسل مُحدد، تستمر حلقات `while` في التنفيذ طالما بقي الشرط المُحدد صحيحًا. وهذا يجعلها مفيدة بشكل خاص عندما يكون عدد التكرارات غير معروف مسبقًا.
محتويات
- بنية حلقة `while` الأساسية
- التحكم في تنفيذ الحلقة: `break` و `continue`
- بنية `while-else`
- أمثلة عملية
- تجنب الحلقات اللانهائية
بنية حلقة `while` الأساسية
التركيب النحوي الأساسي لحلقة `while` بسيط:
while condition:
# الكود المراد تنفيذه بشكل متكرر
# ...
يتم تقييم `condition` قبل كل تكرار. إذا كان التقييم صحيحًا (`True`)، يتم تنفيذ كتلة الكود المسحوقة. وإذا كان التقييم خاطئًا (`False`)، تنتهي الحلقة، ويستمر البرنامج مع الجمل التي تلي الحلقة.
التحكم في تنفيذ الحلقة: `break` و `continue`
توفر عبارتا `break` و `continue` تحكمًا دقيقًا في سلوك الحلقة:
break
: تخرج من الحلقة فورًا، بغض النظر عن الشرط.continue
: تتخطى باقي التكرار الحالي وتنتقل إلى التكرار التالي.
count = 0
while count < 5:
count += 1
if count == 3:
continue # تخطي طباعة 3
print(count)
while count < 10:
count += 1
if count == 7:
break # الخروج من الحلقة عندما يكون count يساوي 7
print(count)
بنية `while-else`
تدعم حلقة `while` في بايثون بشكل فريد كتلة `else` اختيارية. يتم تنفيذ كتلة `else` هذه فقط إذا اكتملت الحلقة *بشكل طبيعي* — أي عندما يصبح شرط الحلقة `False`. ومن المهم ملاحظة أن كتلة `else` *لا* يتم تنفيذها إذا تم إنهاء الحلقة باستخدام عبارة `break`. وهذا يوفر طريقة نظيفة للتعامل مع المواقف التي تحتاج فيها إلى تنفيذ إجراء فقط عندما تنتهي الحلقة دون انقطاع.
count = 0
while count < 5:
print(count)
count += 1
else:
print("اكتملت الحلقة بشكل طبيعي!")
count = 0
while count < 5:
if count == 3:
break
print(count)
count += 1
else:
print("لم تكتمل الحلقة بشكل طبيعي!") # لن تُطبع هذه العبارة
أمثلة عملية
فيما يلي مثالان يُوضحان الاستخدامات العملية لحلقات `while`:
مثال 1: التحقق من صحة إدخال المستخدم
while True:
try:
age = int(input("أدخل عمرك: "))
if age >= 0:
break # الخروج من الحلقة إذا تم إدخال عمر صحيح
else:
print("العمر لا يمكن أن يكون سالبًا.")
except ValueError:
print("إدخال غير صحيح. يرجى إدخال رقم.")
print(f"عمرك هو: {age}")
مثال 2: محاكاة العد التنازلي
import time
countdown = 10
while countdown > 0:
print(countdown)
time.sleep(1) # التوقف لمدة ثانية واحدة
countdown -= 1
print("انطلاق!")
تجنب الحلقات اللانهائية
من المُحبط الشائع مع حلقات `while` هو إنشاء حلقة لانهائية — حلقة لا تنتهي أبدًا. يحدث هذا عادةً عندما لا يصبح شرط الحلقة `False` أبدًا. تأكد دائمًا من أن شرط الحلقة سيُقيّم في النهاية إلى `False`. راجع منطق الحلقة بعناية وتأكد من تحديث المتغيرات التي تؤثر على الشرط بشكل مناسب داخل جسم الحلقة.