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

게시 됨: 2022-08-31

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

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

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

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

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

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

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

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

브라우저에서 바로 Geekflare의 온라인 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 < 0False 초기에 count 변수가 1로 초기화됩니다. 따라서 위 코드를 컴파일하고 실행하면 while 루프 본문의 문이 실행되지 않는 것을 볼 수 있습니다.

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

동안 대 Do-While: 차이점 개요

while 루프와 do-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 루프가 작동하고 루프 조건을 네 번 확인하는 방법입니다.

do-while-loop 예제
 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 루프는 반복 조건을 5번 확인합니다.

while 루프 예제
 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 루프 Do-While 루프
루프 조건 확인: 루프 본문 실행 전 루프 조건 확인: 루프 본문 실행 후
조건이 처음에 False 이면 루프 본문이 실행되지 않습니다. 조건이 처음에 False 이면 루프 본문은 정확히 한 번 실행됩니다.
루프를 통과하는 K에 대해 루프 조건이 K 번 확인됩니다. 루프를 통과하는 K에 대해 루프 조건을 K-1회 확인합니다.
while 루프는 언제 사용합니까?
– 조건이 True인 동안 루프가 실행되어야 합니다.
– 진입 통제 루프의 경우
- 루핑 조건이 계산적으로 비싸지 않은 경우
do-while 루프는 언제 사용합니까?
– 루프는 초기 False 루프 조건에 대해 적어도 한 번 실행되어야 합니다.
– 출구 제어 루프의 경우
- 루핑 조건이 계산적으로 비싼 경우

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 ) 내에서 비밀 번호를 추측해야 합니다.

코드는 추측이 맞든 그르든 상관없이 사용자에게 입력을 요청해야 합니다. 무한 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 루프를 에뮬레이트하는 방법을 이해하는 데 도움이 되었기를 바랍니다.

다음은 주요 내용입니다.

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

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