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

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

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

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

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

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

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

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

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

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

//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...

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

  • قيمة العد هي 1 ، وشرط التكرار هو العد <0. ومع ذلك ، يتم تشغيل الحلقة مرة واحدة على الرغم من أن شرط التكرار خطأ في البداية.
  • هذا على عكس حلقة while التي يتم تنفيذها فقط إذا كان شرط التكرار صحيحًا في المقام الأول.
//while_example1

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: n");
    
    while(count<0){
        printf("Loop runs...");
        }

    return 0;
}

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

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("%dn",count);
       count++;
    }while(count<5);

    return 0;
}

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

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

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

Output

Do-while loop: 
1
2
3
4

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

//while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: n");
    
    while(count<5){
       printf("%dn",count);
       count++;
    };

    return 0;
}

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

Output

While loop: 
1
2
3
4

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

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

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

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

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

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

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

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

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

  كيفية تغيير صوت الإعلام في KIK

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

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

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

بيان 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

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

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

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

أمثلة لـ Python Do-while Loop

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

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

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

يجب أن يستمر التكرار طالما أن العدد أقل من خمسة. لذلك ، عندما يصل العد إلى خمسة ، يجب أن نخرج من الحلقة. لذا فإن العد == 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 اللانهائية.

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

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

  أفضل 4 أدوات لتجاوز FRP من سامسونج يمكنك تجربتها
  • عندما يخمن المستخدم الرقم
  • عندما لا يخمن المستخدم الرقم بعد ، ولكنه قد استنفد عدد التخمينات المتاحة. عدد التخمينات غير الصحيحة من قبل المستخدم = 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 ، أو قد تكون أثناء ، بحيث يكون الشرط دائمًا صحيحًا.
    • تحقق من حالة الخروج داخل الحلقة واستخدم تعليمة break للخروج من الحلقة تحت شرط معين.

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