Како емулирати До-Вхиле петље у Питхон-у

У овом водичу ћете научити како да емулирате до-вхиле петљу у Питхон-у.

У било ком програмском језику, петље вам помажу да извршите одређене радње више пута, у зависности од услова петље. Питхон подржава конструкције вхиле и фор петље, али не подржава нативно петљу до-вхиле.

Међутим, можете емулирати до-вхиле петљу тако што ћете разумети како она функционише – користећи постојеће петље и наредбе за контролу петље у Питхон-у.

Научићете како то да урадите у наредних неколико минута. Почнимо!

Шта је конструкција петље До-Вхиле?

Ако сте програмирали на језицима као што су Ц или Ц++, вероватно бисте наишли на конструкцију до-вхиле петље.

У до-вхиле петљи, скуп наредби у телу петље – унутар блока омеђеног витичастим заградама – се прво извршава, а затим се проверава услов петље.

Можете покренути следеће Ц примере у вдзвдз-овом онлајн Ц компајлеру – директно из вашег претраживача.

Размотрите следећи исечак кода:

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

#include <stdio.h>

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

    return 0;
}

Као што је поменуто, услов петље, цоунт < 0 је Фалсе, у почетку је променљива цоунт иницијализована на 1. Дакле, након компајлирања и покретања горњег кода, видимо да се наредба у телу вхиле петље не извршава.

Output

While loop: 
//loop body does not run!

Док наспрам До-Вхиле: Преглед разлика

Хајде да ближе погледамо разлике између вхиле и до-вхиле петљи.

Размотрите овај пример:

//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.
  • Користимо до-вхиле петљу.
  • Променљива бројања се повећава за 1 током сваког проласка кроз петљу, а услов петље је подешен на цоунт < 5.
  Како очистити ХП главу штампача

Ево визуелног објашњења како се извршавање дешава: како ради петља до-вхиле и проверава услов петље четири пута.

Output

Do-while loop: 
1
2
3
4

Ако уместо тога користите вхиле петљу, ово је оно што бисмо имали.

//while_example2

#include <stdio.h>

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

    return 0;
}

Слика испод објашњава извршење вхиле петље; у овом примеру, вхиле петља проверава услов петље пет пута.

Output

While loop: 
1
2
3
4

Иако су излази за горње вхиле и до-вхиле петље идентични, постоје неке суптилне разлике.

У петљи вхиле, прво долази провера стања, а затим тело петље. Дакле, ако желите да се петља покрене К пута, требало би да постоји тачно К покрета где је услов петље Тачан. У итерацији број К+1, услов постаје Фалсе, а контрола излази из петље.

С друге стране, ако користите до-вхиле петљу: услов петље се проверава по К-ти пут тек након што К прође кроз петљу.

Па зашто је ово маргинално побољшање корисно?🤔

Претпоставимо да је услов петље рачунски скуп: на пример, укључује позив рекурзивне функције, сложену математичку операцију и тако даље.

У таквим случајевима, за К понављања тела петље, било би корисно уместо тога користити до-вхиле петљу.

Док у односу на До-Вхиле Резиме

Хајде да табеларно прикажемо кључне разлике које смо научили. 👩‍🏫

Док је ЛоопДо-Вхиле ЛоопЦхецк за услов петље: Пре извршења петље бодиЦхецк за услов петље: Након извршења тела петље Ако је услов у почетку Фалсе, тело петље се не извршава. Ако је услов у почетку Фалсе, тело петље се извршава тачно једном. Услов петље се проверава К пута за К пролази кроз петљу. Услов петље се проверава К-1 пута за К пролази кроз петљу. Када користити вхиле петљу?
– Петља треба да траје све док је услов Тачан
– За петље са контролом улаза
– Када услов петље није рачунски скуп.Када користити до-вхиле петљу?
– Петља би требало да се покрене најмање једном за иницијално Фалсе услов петље
– За излазно контролисане петље
– Када је услов петље рачунарски скуп

  Како покренути ЈаваСцрипт у Висуал Студио Цоде-у и програмирати као професионалац

Емулација понашања петље До-Вхиле у Питхон-у

Из претходног одељка, имамо следећа два услова за емулацију до-вхиле петље:

  • Наредбе у телу петље треба да се изврше најмање једном — без обзира да ли је услов петље Тачан или Нетачан.
  • Услов треба проверити након извршавања наредби у телу петље. Ако је услов Фалсе, контрола треба да изађе из петље: излаз из контроле.

Бесконачна вхиле петља и изјава Бреак у Питхон-у

Можете дефинисати бесконачну вхиле петљу у Питхон-у, као што је приказано испод.

while True:
    pass

# Instead of True, you can have any condition that is always True

while always-True-condition:
   pass

Наредба бреак се може користити за излазак из тела петље и пренос контроле на прву наредбу изван тела петље.

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

У првом примеру до-вхиле петље у Ц, услов за наставак петље је цоунт < 0. Дакле, услов за излазак из петље је вредност бројања нула или већа од нуле (број >= 0).

Ево емулације до-вхиле петље у Питхон-у:

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

Примери Питхон До-Вхиле петље

Поново ћемо погледати примере из претходног одељка и преписати их у Питхон-у емулацијом до вхиле петље.

#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. Такође можемо да препишемо игру погађања бројева као Питхон до-вхиле конструкцију.

  Како преименовати Панде колоне [4 Examples]

У игри погађања бројева, ми потврђујемо претпоставке корисника у односу на унапред дефинисан тајни број. Корисник треба да погоди тајни број у оквиру одређеног броја максимално дозвољених покушаја, рецимо, мак_гуессес.

Код треба да затражи од корисника да унесе унос, без обзира да ли је њихова претпоставка тачна или погрешна. То можемо урадити користећи бесконачну вхиле петљу.

Па када треба да изађемо из петље?

Контрола би требало да изађе из петље када се деси било шта од следећег:

  • Када је корисник погодио број
  • Када корисник још није погодио број, али је исцрпео број доступних погађања. Број нетачних нагађања од стране корисника = мак_гуеессес.
  • Ћелија кода испод показује како то можемо да урадимо.

    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

    Уместо да изађемо из петље, можемо да додамо објашњења принт() када наиђемо на сваки од горе наведених услова, а затим изађемо из петље.

    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

    Два узорка излаза су приказана испод.

    У овом узорку излаза, наредба бреак излази из петље када корисник тачно погоди тајни број.

    # 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!

    Закључак

    Надам се да вам је овај водич помогао да разумете како да емулирате до-вхиле петљу у Питхон-у.

    Ево кључних закључака:

    • Користите бесконачну петљу да бисте осигурали да се тело петље покрене најмање једном. То може бити тривијална бесконачна петља као што је вхиле Труе, или може бити вхиле <услов>, тако да је услов увек Тачан.
    • Проверите да ли постоји излазни услов унутар петље и користите наредбу бреак да бисте изашли из петље под одређеним условом.

    Затим научите како да користите фор петље и функцију енумерате() у Питхон-у.