شرح Python Do While: كيفية محاكاة حلقة do while في بايثون مع أمثلة عملية
مقدمة إلى الحلقات التكرارية في Python
تُعد الحلقات التكرارية من أهم الأدوات في البرمجة الحديثة، لأنها تساعد على تنفيذ الأوامر المتكررة بكفاءة، وتقلل من الحاجة إلى كتابة الكود نفسه أكثر من مرة. وعند الرغبة في أتمتة مهمة متكررة داخل البرنامج، فإن استخدام loops هو الخيار الأنسب.
في لغة Python، تعمل الحلقات على تنفيذ مجموعة من التعليمات بشكل متكرر إلى أن يتحقق شرط محدد أو يتوقف البرنامج عن التكرار وفقًا لمنطق الكود.

أنواع الحلقات في Python
توفر لغة Python نوعين أساسيين من الحلقات التكرارية المدمجة:
- for loops
- while loops
وفي هذا المقال سنركز على while loop، ثم نوضح كيفية محاكاة do while في Python رغم أنها ليست متاحة بشكل مباشر داخل اللغة.
ما هي while loop في Python؟
تُستخدم while loop لتنفيذ كتلة من الكود طالما أن شرطًا معينًا يقيَّم على أنه True. وما إن يصبح الشرط False، تتوقف الحلقة تلقائيًا.
الصيغة العامة لكتابة while loop في Python تكون كالتالي:
while condition:
execute this code in the loop's body
الفكرة الأساسية هنا أن Python تتحقق أولًا من الشرط قبل تنفيذ أي سطر داخل الحلقة. فإذا كان الشرط صحيحًا، يبدأ التنفيذ. وإذا لم يكن كذلك، فلن تعمل الحلقة من الأساس.
مثال عملي على while loop
number = 0
while number < 10:
print(f"Number is {number}!")
number = number + 1
الناتج سيكون كالتالي:
Number is 0!
Number is 1!
Number is 2!
Number is 3!
Number is 4!
Number is 5!
Number is 6!
Number is 7!
Number is 8!
Number is 9!
في هذا المثال، يبدأ المتغير number بالقيمة 0. ثم تتحقق Python من الشرط number < 10. وبما أن النتيجة True، يتم تنفيذ أوامر الحلقة.
بعد كل دورة، تتم زيادة قيمة المتغير بمقدار 1. وتستمر العملية إلى أن تصل القيمة إلى 10، وهنا يصبح الشرط غير محقق، فتتوقف الحلقة.
متى لا تعمل while loop إطلاقًا؟
من المهم فهم أن while loop قد لا تُنفذ حتى مرة واحدة إذا كان الشرط غير محقق منذ البداية.
number = 50
while number < 10:
print(f"Number is {number}!")
في هذا المثال، الشرط number < 10 غير صحيح من البداية، لذلك لن يتم تنفيذ أي سطر داخل الحلقة.
وهذه نقطة جوهرية تميز while loop عن do while في لغات أخرى.
الحلقات اللانهائية في Python وكيفية تجنبها
عند استخدام while loop، يجب التأكد من وجود شيء داخل الحلقة يغيّر حالة الشرط مع الوقت. وإلا فقد تقع في مشكلة infinite loop، وهي حلقة تستمر في العمل بلا نهاية.
# don't run this
number = 0
while number < 10:
print(f"Number is {number}!")
الناتج سيكون تكرارًا لا نهائيًا مشابهًا لما يلي:
Number is 0!
Number is 0!
Number is 0!
Number is 0!
...
سبب المشكلة أن قيمة number لا تتغير أبدًا، وبالتالي يبقى الشرط number < 10 صحيحًا إلى ما لا نهاية.
والأمر نفسه ينطبق على المثال التالي:
# don't run this
while True:
print("I am always true")
بما أن الشرط هنا هو True دائمًا، فإن الحلقة لن تتوقف ما لم يتم إيقافها يدويًا.
كيف توقف الحلقة اللانهائية؟
إذا وجدت نفسك داخل حلقة لا نهائية أثناء التشغيل، يمكنك عادة إيقافها عبر الضغط على Control + C في الطرفية أو سطر الأوامر.
ما هي do while loop؟
في بعض لغات البرمجة مثل C وJava وJavaScript، توجد بنية تكرارية باسم do while loop. وتمتاز هذه الحلقة بأنها تنفذ الكود مرة واحدة على الأقل قبل التحقق من الشرط.
الصيغة العامة لها تكون عادة على النحو التالي:
do {
loop block statement to be executed;
} while (condition);
ومثالها في لغة C:
#include <stdio.h>
int main(void) {
int i = 10;
do {
printf("the value of i: %i\n", i);
i++;
} while (i < 20);
}
الميزة الأساسية هنا أن الكود داخل الحلقة يُنفذ أولًا، ثم يتم فحص الشرط بعد ذلك. لذلك حتى لو كان الشرط غير مناسب لاحقًا، فإن الحلقة تكون قد نفذت مرة واحدة على الأقل.
لماذا قد تحتاج إلى do while؟
تظهر فائدة do while loop في الحالات التي تريد فيها تنفيذ جزء من الكود مرة أولى بشكل إلزامي، ثم تحديد ما إذا كان يجب الاستمرار.
ومن أشهر الأمثلة على ذلك:
- طلب إدخال من المستخدم مرة واحدة على الأقل.
- التحقق من صحة البيانات بعد أول محاولة إدخال.
- إعادة المحاولة حتى تتحقق شروط معينة.
على سبيل المثال، إذا كان البرنامج يطلب من المستخدم إدخال رقم موجب، فمن المنطقي أن يتم عرض طلب الإدخال أولًا، ثم فحص القيمة بعد ذلك.
هل تدعم Python حلقة do while بشكل مباشر؟
الإجابة المختصرة: لا. لغة Python لا توفر do while loop كبنية مدمجة مثل بعض اللغات الأخرى.
لكن الخبر الجيد هو أنه يمكن محاكاة السلوك نفسه باستخدام while True مع شرط إنهاء مناسب مثل break.
كيفية محاكاة do while في Python
للحصول على سلوك مشابه لـ do while loop في Python، يمكن تشغيل الحلقة أولًا بشكل مضمون، ثم استخدام شرط داخلي يحدد متى يجب التوقف.
إليك المثال التالي:
secret_word = "python"
counter = 0
while True:
word = input("Enter the secret word: ").lower()
counter = counter + 1
if word == secret_word:
break
if word != secret_word and counter > 7:
break
كيف يعمل هذا المثال؟
- تبدأ الحلقة باستخدام while True، ما يضمن تنفيذها مرة واحدة على الأقل.
- يُطلب من المستخدم إدخال الكلمة السرية.
- إذا كانت القيمة المدخلة مطابقة لـ secret_word، تتوقف الحلقة عبر break.
- إذا تجاوز عدد المحاولات 7 وكانت الإجابة لا تزال خاطئة، تنتهي الحلقة أيضًا.
هذا النمط يمنحك سلوكًا قريبًا جدًا من do while، لأن التنفيذ يحدث أولًا، ثم يتم اتخاذ قرار الاستمرار أو التوقف بعد ذلك.
دور break في التحكم في while loop
تُعد break من أهم الأدوات عند التعامل مع while loop، خاصة عند محاكاة do while في Python.
وظيفتها الأساسية هي إنهاء الحلقة فورًا، بغض النظر عن الشرط الأصلي. وهذا يجعلها مناسبة جدًا عندما تكون شروط الإيقاف تعتمد على منطق داخلي يحدث بعد تنفيذ الكود.
استخدام break بشكل صحيح يساعدك على:
- تجنب الحلقات اللانهائية.
- التحكم الدقيق في تدفق البرنامج.
- كتابة منطق تكراري أكثر مرونة.
الفرق بين while loop و do while loop
| العنصر | while loop | do while loop |
|---|---|---|
| وقت فحص الشرط | قبل التنفيذ | بعد التنفيذ |
| إمكانية التنفيذ مرة واحدة على الأقل | غير مضمونة | مضمونة دائمًا |
| التوفر في Python | مدعومة مباشرة | غير مدعومة مباشرة |
| طريقة المحاكاة في Python | استخدام while مع شرط | استخدام while True مع break |
أفضل الممارسات عند استخدام حلقات التكرار في Python
- تأكد من وجود شرط توقف واضح حتى لا تقع في حلقة لا نهائية.
- حدّث المتغيرات المؤثرة في الشرط داخل الحلقة عند الحاجة.
- استخدم break بحذر عندما يكون منطق الإيقاف داخليًا.
- اختر نوع الحلقة المناسب: استخدم for عندما تعرف عدد التكرارات مسبقًا، واستخدم while عندما يعتمد التكرار على شرط ديناميكي.
- اجعل الكود مقروءًا عبر تسمية المتغيرات بوضوح وتقليل التعقيد داخل جسم الحلقة.
متى تستخدم محاكاة do while في Python؟
يُفضل هذا الأسلوب في الحالات التي تتطلب تنفيذ الأمر أولًا ثم التحقق، مثل:
- أنظمة تسجيل الدخول المحدودة بعدد محاولات.
- نماذج الإدخال التي تتطلب التحقق من صحة البيانات.
- الألعاب النصية التي تستمر حتى يحقق المستخدم شرطًا معينًا.
- برامج الأوامر التفاعلية التي تعرض قائمة ثم تنتظر خيار المستخدم.
الخلاصة التقنية
رغم أن Python لا تدعم do while loop بشكل مباشر، فإن الجمع بين while True وbreak يوفر بديلًا عمليًا ومرنًا يؤدي الغرض بكفاءة. والأهم من ذلك هو فهم الفرق المنطقي بين فحص الشرط قبل التنفيذ وبعده، لأن هذا الفهم ينعكس مباشرة على جودة تصميم الخوارزميات وسلامة تدفق البرنامج. إذا أحسنت استخدام while loop مع شروط توقف دقيقة، فستتمكن من بناء منطق تكراري واضح وآمن وقابل للصيانة.