У овом упутству, истражићемо како се може симулирати do-while петља у програмском језику Python.
У свету програмирања, петље су изузетно корисне за вишеструко извођење одређених инструкција, све док је испуњен задати услов. Python нуди while и for петље, али не подржава директно do-while петљу.
Ипак, до-while петљу је могуће симулирати разумевањем њеног начина рада – користећи доступне петље и наредбе за контролу тока у језику Python.
У наредним минутима, научићемо како се то ради. Кренимо!
Шта представља do-while петља?
Уколико сте имали прилику да програмирате у језицима као што су C или C++, вероватно сте се сусрели са конструкцијом do-while петље.
У do-while петљи, прво се извршава скуп наредби унутар петље (блок кога ограничавају витичасте заграде), а затим се проверава услов петље.
Следеће примере у програмском језику C можете испробати у онлајн C компајлеру.
Погледајмо следећи део кода:
//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. Међутим, петља се извршава једанпут, иако услов петље није испуњен на почетку.
- Ово је другачије од 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, није испуњен на почетку, јер је променљива count иницијализована на 1. Зато, након компајлирања и покретања наведеног кода, видимо да се наредба у телу while петље не извршава.
Output While loop: //loop body does not run!
Упоређивање while и do-while петљи: Преглед разлика
Детаљније ћемо погледати разлике између 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; }
У горњем коду:
- Променљива count је иницијализована на 1.
- Користимо do-while петљу.
- Променљива count се увећава за 1 током сваког проласка кроз петљу, а услов петље је count < 5.
Испод је визуелни приказ како се извршава do-while петља и како се услов петље проверава четири пута.
Output Do-while loop: 1 2 3 4
Ако користимо while петљу уместо do-while, изглед кода би био следећи.
//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)-вој итерацији, услов постаје неистинит (False) и излази се из петље.
С друге стране, у do-while петљи, услов се проверава тек након K-тог проласка кроз петљу.
Зашто је ова мала разлика корисна? 🤔
Замислите да је услов петље рачунарски захтеван, на пример, укључује позивање рекурзивне функције, сложене математичке операције, итд.
У таквим ситуацијама, до-while петља би била кориснија за K извршавања тела петље.
Упоредни приказ while и do-while петљи
Саставимо табеларни приказ кључних разлика које смо научили. 👩🏫
Карактеристика | While Петља | Do-While Петља |
Провера услова | Пре извршавања тела петље | Након извршавања тела петље |
Прво извршавање | Ако је услов неистинит (False), тело петље се не извршава. | Ако је услов неистинит (False), тело петље се извршава тачно једном. |
Број провера услова | Услов се проверава K пута за K пролаза кроз петљу. | Услов се проверава K-1 пута за K пролаза кроз петљу. |
Када користити | – Када петља треба да се извршава док је услов истинит (True) – За улазно-контролисане петље – Када услов петље није рачунарски захтеван. |
– Када петља треба да се изврши бар једном чак и ако услов није истинит (False) – За излазно-контролисане петље – Када је услов петље рачунарски захтеван. |
Симулација понашања do-while петље у Python-у
Из претходног одељка, закључујемо да је за симулацију do-while петље неопходно:
- Наредбе у телу петље треба да се изврше бар једном – без обзира да ли је услов петље истинит (True) или неистинит (False).
- Услов треба проверити након извршавања наредби у телу петље. Ако је услов неистинит (False), контрола излази из петље.
Бесконачна while петља и break наредба у Python-у
Бесконачну while петљу у Python-у можете дефинисати као што је приказано испод.
while True: pass # Уместо True, можете користити било који услов који је увек истинит (True) while always-True-condition: pass
Наредба break се користи за излазак из тела петље и пренос контроле на прву наредбу изван тела петље.
while <condition>: if <some-condition>: break
У првом примеру do-while петље у C-у, услов за наставак петље је био count < 0. Према томе, услов за излазак из петље је вредност променљиве count нула или већа од нуле (count >= 0).
Следи симулација do-while петље у Python-у:
count = 1 while True: print("Loop runs...") if(count >= 0): break
Примери do-while петље у Python-у
Поново ћемо погледати примере из претходног одељка и преписати их у Python-у користећи симулацију do-while петље.
#1. Вратимо се на пример штампања вредности променљиве count када је count мање од пет.
Знамо како да дефинишемо бесконачну петљу, тако да се тело петље изврши бар једном.
Петља треба да се настави све док је 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. Такође, можемо преписати игру погађања броја као do-while конструкцију у Python-у.
У игри погађања броја, проверавамо претпоставке корисника у односу на унапред дефинисани тајни број. Корисник треба да погоди тајни број у оквиру одређеног броја покушаја, на пример, max_guesses.
Код треба да затражи од корисника да унесе број, без обзира да ли је њихова претпоставка тачна или нетачна. Ово можемо учинити користећи бесконачну while петљу.
Када треба да изађемо из петље?
Контрола треба да изађе из петље када се деси један од следећих случајева:
Следећи код показује како то можемо урадити.
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
Два примера излаза су приказана у наставку.
У овом примеру излаза, наредба 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, или while <услов> где је услов увек True.
- Проверите да ли постоји услов за излазак из петље унутар тела петље, и користите наредбу break да бисте изашли из петље под одређеним условом.
У наставку, научите како да користите for петље и функцију enumerate() у Python-у.