이 자습서에서는 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로 설정됩니다.
다음은 실행 방법에 대한 시각적 설명입니다. 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 루프 조건에 대해 적어도 한 번 실행되어야 합니다.
– 출구 제어 루프의 경우
– 루핑 조건이 계산적으로 비싼 경우
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 루프를 사용하여 이를 수행할 수 있습니다.
그렇다면 우리는 언제 루프에서 벗어나야 할까요?
컨트롤은 다음 중 하나가 발생하면 루프에서 벗어나야 합니다.
아래 코드 셀은 어떻게 할 수 있는지 보여줍니다.
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() 함수를 사용하는 방법을 배웁니다.