كيفية محاكاة حلقات Do-while في Python

نشرت: 2022-08-31

في هذا البرنامج التعليمي ، ستتعلم كيفية محاكاة حلقة do-while في Python .

في أي لغة برمجة ، تساعدك الحلقات على تنفيذ إجراءات معينة بشكل متكرر ، اعتمادًا على حالة التكرار. تدعم Python بنيات while و for loop ولكنها لا تدعم في الأصل حلقة do-while loop.

ومع ذلك ، يمكنك محاكاة حلقة do-while من خلال فهم كيفية عملها - باستخدام الحلقات الموجودة وعبارات التحكم في الحلقة في Python.

ستتعلم كيفية القيام بذلك خلال الدقائق القليلة القادمة. هيا نبدأ!

ما هو إنشاء حلقة Do-while؟

ما هو بناء حلقة العمل أثناء

إذا كنت قد قمت ببرمجتها بلغات مثل C أو C ++ ، فمن المحتمل أن تكون قد صادفت بنية حلقة do-while.

في حلقة do-while ، يتم تنفيذ مجموعة العبارات الموجودة في جسم الحلقة - داخل الكتلة المحددة بأقواس معقوفة - أولاً ثم يتم التحقق من شرط التكرار.

يمكنك تشغيل أمثلة C التالية في مترجم C عبر الإنترنت الخاص بـ Geekflare — مباشرة من المستعرض الخاص بك.

ضع في اعتبارك مقتطف الشفرة التالي:

 //do_while_example1 #include <stdio.h> int main() { int count = 1; printf("Do-While loop: \n"); do{ printf("Loop runs..."); }while(count<0); return 0; }

ها هو الناتج.

 Output Do-While loop: Loop runs...

في المثال أعلاه:

  • قيمة count هي 1 ، وشرط التكرار هو count < 0 . ومع ذلك ، يتم تشغيل الحلقة مرة واحدة على الرغم من أن شرط التكرار False في البداية.
  • هذا على عكس حلقة while التي يتم تنفيذها فقط إذا كان شرط التكرار True في المقام الأول.
 //while_example1 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<0){ printf("Loop runs..."); } return 0; }

كما ذكرنا ، شرط التكرار ، count < 0 هو False في البداية ، يتم تهيئة متغير count إلى 1. لذلك عند تجميع الكود أعلاه وتشغيله ، نرى أن العبارة في جسم الحلقة while لا يتم تنفيذها.

 Output While loop: //loop body does not run!

أثناء مقابل القيام بذلك: نظرة عامة على الاختلافات

دعنا نلقي نظرة فاحصة على الاختلافات بين الحلقات while و do-while.

أثناء مقابل القيام بذلك: نظرة عامة على الاختلافات

ضع في اعتبارك هذا المثال:

 //do_while_example2 #include <stdio.h> int main() { int count = 1; printf("Do-while loop: \n"); do{ printf("%d\n",count); count++; }while(count<5); return 0; }

في خلية الكود أعلاه:

  • تتم تهيئة متغير count إلى 1.
  • نحن نستخدم حلقة do-while.
  • يتم زيادة متغير count بمقدار 1 خلال كل تمريرة عبر الحلقة ، ويتم تعيين شرط التكرار على count < 5 .

فيما يلي شرح مرئي لكيفية حدوث التنفيذ: كيف تعمل حلقة do-while وتتحقق من شرط التكرار أربع مرات.

مثال على التكرار
 Output Do-while loop: 1 2 3 4

إذا كنت تستخدم حلقة while بدلاً من ذلك ، فهذا هو ما لدينا.

 //while_example2 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<5){ printf("%d\n",count); count++; }; return 0; }

يوضح الشكل أدناه تنفيذ حلقة while ؛ في هذا المثال ، تتحقق حلقة while من شرط التكرار خمس مرات.

أثناء الحلقة على سبيل المثال
 Output While loop: 1 2 3 4

على الرغم من أن نواتج الحلقات while و do-while أعلاه متطابقة ، إلا أن هناك بعض الاختلافات الدقيقة.

في حلقة while ، يأتي التحقق من الشرط أولاً ، متبوعًا بجسم الحلقة. لذلك إذا كنت تريد تشغيل الحلقة K مرة ، فيجب أن يكون هناك K عمليات تشغيل بالضبط حيث يكون شرط التكرار True . في رقم التكرار K + 1 ، يصبح الشرط False ، وينفصل عنصر التحكم عن الحلقة.

من ناحية أخرى ، إذا كنت تستخدم حلقة do-while: يتم فحص شرط التكرار لوقت K-th فقط بعد مرور K عبر الحلقة.

فلماذا هذا التحسين الهامشي مفيد؟

لنفترض أن شرط التكرار مكلف من الناحية الحسابية: على سبيل المثال ، يتضمن استدعاء دالة تكرارية ، وعملية رياضية معقدة ، وما إلى ذلك.

في مثل هذه الحالات ، بالنسبة لتكرار K لجسم الحلقة ، سيكون من المفيد استخدام حلقة do-while بدلاً من ذلك.

بينما مقابل ملخص العمل أثناء

لنقم بجدولة الاختلافات الرئيسية التي تعلمناها.

حائط اللوب افعل أثناء التكرار
تحقق من حالة التكرار: قبل تنفيذ جسم الحلقة تحقق من حالة التكرار: بعد تنفيذ جسم الحلقة
إذا كان الشرط False في البداية ، فلن يتم تنفيذ نص الحلقة. إذا كان الشرط False في البداية ، يتم تنفيذ جسم الحلقة مرة واحدة بالضبط .
يتم التحقق من حالة التكرار K مرة من أجل مرور K عبر الحلقة. يتم فحص حالة التكرار K-1 مرات لمرور K عبر الحلقة.
متى تستخدم أثناء حلقة؟
- يجب تشغيل Loop طالما أن الشرط صحيح
- للحلقات التي يتم التحكم فيها عن طريق الدخول
- عندما تكون حالة التكرار غير مكلفة من الناحية الحسابية
متى يتم استخدام حلقة do-while؟
- يجب تشغيل Loop مرة واحدة على الأقل لشرط تكرار False مبدئيًا
- للحلقات التي يتحكم فيها الخروج
- عندما تكون حالة التكرار مكلفة حسابيًا

محاكاة سلوك التكرار في بايثون

من القسم السابق ، لدينا الشرطان التاليان لمحاكاة حلقة do-while:

  • يجب أن يتم تنفيذ العبارات الموجودة في نص الحلقة مرة واحدة على الأقل - بغض النظر عما إذا كان شرط التكرار True أم False .
  • يجب التحقق من الشرط بعد تنفيذ العبارات في جسم الحلقة. إذا كان الشرط False ، يجب أن يخرج عنصر التحكم من الحلقة: التحكم في الخروج.

بيان Infinite while Loop and Break في بايثون

افعل بينما بيثون

يمكنك تحديد حلقة while اللانهائية في Python ، كما هو موضح أدناه.

 while True: pass # Instead of True, you can have any condition that is always True while always-True-condition: pass

يمكن استخدام تعليمة break للخروج من جسم الحلقة ونقل التحكم إلى العبارة الأولى خارج جسم الحلقة.

 while <condition>: if <some-condition>: break

في المثال الأول لحلقة do-while في C ، يكون الشرط لمتابعة التكرار هو count < 0 . لذا فإن شرط الخروج من الحلقة هو قيمة عد تساوي صفرًا أو أكبر من الصفر ( count >= 0 ).

إليك محاكاة حلقة do-while في بايثون:

 count = 1 while True: print("Loop runs...") if(count >= 0): break

أمثلة على Python Do-while Loop

سنعيد النظر في الأمثلة من القسم السابق ونعيد كتابتها في Python عن طريق محاكاة do while loop.

# 1 . دعنا نعيد النظر في المثال: طباعة قيم متغير count عندما يكون count أقل من خمسة.

نحن نعلم كيفية تحديد حلقة لا نهائية بحيث يتم تنفيذ جسم الحلقة مرة واحدة على الأقل.

يجب أن تستمر التكرار طالما أن العدد أقل من خمسة. لذلك ، عندما يصل العد إلى خمسة ، يجب أن نخرج من الحلقة. لذا فإن count == 5 هو شرط التحكم في الخروج.

بتجميعها معًا ، لدينا:

 count = 1 while True: print(f"Count is {count}") count += 1 if count==5: break
 Output Count is 1 Count is 2 Count is 3 Count is 4

# 2 . يمكننا أيضًا إعادة كتابة لعبة التخمين على شكل بايثون.

في لعبة التخمين بالأرقام ، نتحقق من صحة تخمينات المستخدم مقابل رقم سري محدد مسبقًا. يجب على المستخدم تخمين الرقم السري ضمن عدد معين من المحاولات القصوى المسموح بها ، على سبيل المثال ، max_guesses .

يجب أن يطالب الكود المستخدم بالإدخال ، بغض النظر عما إذا كان تخمينه صحيحًا أم خاطئًا. يمكننا القيام بذلك باستخدام حلقة while اللانهائية.

إذن متى يجب أن نخرج من الحلقة؟

يجب أن ينفصل عنصر التحكم عن الحلقة عند حدوث أي مما يلي:

  1. عندما يخمن المستخدم الرقم
  2. عندما لا يخمن المستخدم الرقم بعد ، ولكنه قد استنفد عدد التخمينات المتاحة. عدد التخمينات غير الصحيحة من قبل المستخدم = max_guesses .

توضح خلية الشفرة أدناه كيف يمكننا القيام بذلك.

 import random low, high = 5,50 secret_number = random.choice(range(low,high)) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 conditions = [num_guesses==max_guesses,guess==secret_number] if any(conditions): break

بدلاً من الخروج من الحلقة ، يمكننا إضافة عبارات print() توضيحية عندما نواجه كل من الشروط المذكورة أعلاه ثم نخرج من الحلقة.

 import random low, high = 5,50 secret_number = random.choice(range(low,high)) print(secret_number) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 if guess==secret_number: print("Congrats, you guessed it right!") break if num_guesses==max_guesses: print("Sorry, you have no more guesses left!") break

يتم عرض اثنين من مخرجات العينة أدناه.

في هذا النموذج الناتج ، تنفصل تعليمة break من الحلقة عندما يخمن المستخدم الرقم السري بشكل صحيح.

 # Sample output when secret_number = 43 and user gets it right! Guess a number:4 Guess a number:3 Guess a number:43 Congrats, you guessed it right!

إليك عينة أخرى من المخرجات عندما يصل المستخدم إلى الحد الأقصى لعدد التخمينات المتاحة ولكنه يفشل في تخمين الرقم السري بشكل صحيح.

 # Sample output when secret_number = 33 and user fails to guess it right! Guess a number:3 Guess a number:15 Guess a number:21 Guess a number:50 Guess a number:17 Guess a number:6 Guess a number:18 Guess a number:5 Guess a number:12 Guess a number:43 Sorry, you have no more guesses left!

استنتاج

آمل أن يساعدك هذا البرنامج التعليمي في فهم كيفية محاكاة حلقة do-while في Python.

فيما يلي النقاط الرئيسية:

  • استخدم حلقة لا نهائية لضمان تشغيل جسم الحلقة مرة واحدة على الأقل. يمكن أن تكون حلقة لا نهائية تافهة مثل while True ، أو قد تكون أثناء <condition> ، بحيث يكون الشرط دائمًا صحيحًا.
  • تحقق من حالة الخروج داخل الحلقة واستخدم تعليمة break للخروج من الحلقة تحت شرط معين.

بعد ذلك ، تعرف على كيفية استخدام حلقات for ووظيفة enumerate () في Python.