Python에서 Do-While 루프를 에뮬레이트하는 방법

이 자습서에서는 Python에서 do-while 루프를 에뮬레이트하는 방법을 배웁니다.

모든 프로그래밍 언어에서 루프는 루프 조건에 따라 특정 작업을 반복적으로 수행하는 데 도움이 됩니다. Python은 while 및 for 루프 구성을 지원하지만 기본적으로 do-while 루프를 지원하지 않습니다.

그러나 Python의 기존 루프 및 루프 제어 문을 사용하여 작동 방식을 이해함으로써 do-while 루프를 에뮬레이트할 수 있습니다.

다음 몇 분 동안 이 작업을 수행하는 방법을 배우게 됩니다. 의 시작하자!

Do-While 루프 구성이란 무엇입니까?

C 또는 C++와 같은 언어로 프로그래밍했다면 do-while 루프 구조를 접했을 것입니다.

do-while 루프에서 중괄호로 구분된 블록 내 루프 본문의 명령문 세트가 먼저 실행된 다음 루프 조건이 확인됩니다.

브라우저에서 바로 koreantech.org의 온라인 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입니다. 그러나 루프 조건이 초기에 False인 경우에도 루프는 한 번만 실행됩니다.
  • 이것은 루프 조건이 처음에 True인 경우에만 실행되는 while 루프와 대조됩니다.
//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!

동안 대 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로 설정됩니다.
  "NSFW"는 무엇을 의미하며 어떻게 사용합니까?

다음은 실행 방법에 대한 시각적 설명입니다. 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("%dn",count);
       count++;
    };

    return 0;
}

아래 그림은 while 루프의 실행을 설명합니다. 이 예에서 while 루프는 반복 조건을 5번 확인합니다.

Output

While loop: 
1
2
3
4

위의 while 및 do-while 루프의 출력은 동일하지만 몇 가지 미묘한 차이가 있습니다.

while 루프에서 조건 검사가 먼저 나오고 루프 본문이 옵니다. 따라서 루프를 K번 실행하려면 루프 조건이 True인 곳에서 정확히 K번 실행되어야 합니다. 반복 번호 K+1에서 조건은 False가 되고 제어는 루프에서 벗어납니다.

반면 do-while 루프를 사용하는 경우 K가 루프를 통과한 후에만 K번째 루프 조건을 확인합니다.

그렇다면 이 미미한 개선이 도움이 되는 이유는 무엇입니까?🤔

루핑 조건이 계산 비용이 많이 든다고 가정합니다. 예를 들어 재귀 함수 호출, 복잡한 수학 연산 등이 포함됩니다.

이러한 경우 루프 본문의 K 반복에 대해 do-while 루프를 대신 사용하는 것이 좋습니다.

동안 대 Do-While 요약

지금까지 배운 주요 차이점을 표로 작성해 보겠습니다. 👩‍🏫

While LoopDo-While LoopCheck for looping 조건: 루프 bodyCheck for looping 조건: 루프 body 실행 후 조건이 초기에 False이면 루프 본문을 실행하지 않습니다. 초기에 조건이 False이면 루프 본문 는 정확히 한 번 실행됩니다. 루프 조건은 K가 루프를 통과할 때 K번 검사됩니다.루핑 조건은 K가 루프를 통과할 때 K-1번 검사됩니다. while 루프는 언제 사용합니까?
– 조건이 True인 동안 루프가 실행되어야 합니다.
– 진입 통제 루프의 경우
– 루프 조건이 계산적으로 비싸지 않은 경우 do-while 루프를 사용해야 하는 경우는?
– 루프는 초기 False 루프 조건에 대해 적어도 한 번 실행되어야 합니다.
– 출구 제어 루프의 경우
– 루핑 조건이 계산적으로 비싼 경우

  Linux에서 자동으로 배경 화면을 변경하는 방법

Python에서 Do-While 루프 동작 에뮬레이션

이전 섹션에서 do-while 루프를 에뮬레이트하기 위한 다음 두 가지 조건이 있습니다.

  • 루프 본문의 명령문은 루프 조건이 True인지 False인지에 관계없이 적어도 한 번은 실행되어야 합니다.
  • 루프 본문에서 명령문을 실행한 후 조건을 확인해야 합니다. 조건이 False이면 컨트롤이 루프에서 벗어나야 합니다.

Python의 무한 While 루프 및 중단 문

아래와 같이 Python에서 무한 while 루프를 정의할 수 있습니다.

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의 첫 번째 do-while 루프 예제에서 루프를 계속하기 위한 조건은 count < 0입니다. 따라서 루프를 벗어나는 조건은 0 또는 0보다 큰 카운트 값(count >= 0)입니다.

다음은 Python에서 do-while 루프의 에뮬레이션입니다.

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

Python Do-While 루프 예제

이전 섹션의 예제를 다시 방문하여 do while 루프를 에뮬레이트하여 Python으로 다시 작성합니다.

#1. 예제를 다시 살펴보겠습니다. count가 5보다 작을 때 count 변수의 값을 출력합니다.

루프 본문이 적어도 한 번 실행되도록 무한 루프를 정의하는 방법을 알고 있습니다.

카운트가 5보다 작은 동안에는 반복이 계속되어야 합니다. 따라서 카운트가 5에 도달하면 루프에서 벗어나야 합니다. 따라서 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. 숫자 추측 게임을 Python do-while 구문으로 다시 작성할 수도 있습니다.

숫자 추측 게임에서 사전 정의된 비밀 번호에 대해 사용자의 추측을 검증합니다. 사용자는 허용된 최대 시도 횟수(예: max_guesses) 내에서 비밀 번호를 추측해야 합니다.

  새로운 MacBook Pro로 iPhone을 충전하는 방법

코드는 추측이 맞든 그르든 상관없이 사용자에게 입력을 요청해야 합니다. 무한 while 루프를 사용하여 이를 수행할 수 있습니다.

그렇다면 우리는 언제 루프에서 벗어나야 할까요?

컨트롤은 다음 중 하나가 발생하면 루프에서 벗어나야 합니다.

  • 사용자가 숫자를 추측했을 때
  • 사용자가 아직 숫자를 추측하지 않았지만 사용 가능한 추측 수를 모두 사용한 경우. 사용자의 잘못된 추측 횟수 = 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 루프를 에뮬레이트하는 방법을 이해하는 데 도움이 되었기를 바랍니다.

    다음은 주요 내용입니다.

    • 무한 루프를 사용하여 루프 본문이 한 번 이상 실행되도록 합니다. while True와 같은 사소한 무한 루프이거나 조건이 항상 True인 while 일 수 있습니다.
    • 루프 내부의 종료 조건을 확인하고 break 문을 사용하여 특정 조건에서 루프를 빠져 나옵니다.

    다음으로 파이썬에서 for 루프와 enumerate() 함수를 사용하는 방법을 배웁니다.