logo

[Python] while 반복문

 

while 반복문의 기본 구조

while 반복문의 정의와 기본적 문법 설명

while 반복문은 Python에서 기본적인 반복 제어 구조 중 하나로, 조건이 참(True)인 동안 지정된 코드 블록을 반복하여 실행합니다. while 반복문은 주어진 조건이 거짓(False)이 되거나 반복문 내부에서 실행 흐름을 중단시키는 명령(break)을 만날 때까지 계속 실행됩니다.

기본적인 문법은 다음과 같습니다:

while 조건:
    # 실행할 코드 블록

여기서 조건은 매 반복마다 검사되며, 이 조건이 참(True)일 동안 # 실행할 코드 블록 부분이 반복해서 실행됩니다.

조건이 참(True)인 동안 코드 블록이 반복해서 실행되는 원리

while 반복문은 지정된 조건을 매 반복마다 검사합니다. 프로그램 실행 흐름이 while 문에 도달했을 때, 조건이 참(True)이면, while 문에 속한 코드 블록이 실행됩니다. 코드 블록의 실행이 완료되면, 다시 조건을 검사하여 여전히 참이라면 코드 블록을 다시 실행합니다. 이 과정은 주어진 조건이 거짓(False)이 될 때까지, 또는 코드 블록 내에서 break 명령을 통해 명시적으로 중단될 때까지 반복됩니다.

간단한 예를 들어보겠습니다:

count = 0
while count < 5:
    print("count는 현재", count, "입니다.")
    count += 1
print("while 반복문이 종료되었습니다.")

이 코드에서 count < 5while 문의 조건으로 사용되며, count의 값이 5보다 작은 동안 반복문 내의 코드 블록이 실행됩니다. 각 반복마다 count의 값은 1씩 증가하며, count 값이 5에 도달하면 조건이 거짓(False)이 되어 while 반복문이 종료됩니다. 이 예제는 count의 값이 0부터 4까지 증가하는 동안 "count는 현재 X입니다."라는 문장을 총 5번 출력하고, 반복문이 종료된 후에는 "while 반복문이 종료되었습니다."를 출력합니다.

while 반복문은 특정 조건이 만족하는 동안 반복적인 작업을 실행할 필요가 있을 때 유용하게 사용됩니다. 하지만, 실행 조건이 언젠가는 거짓이 되도록 코드를 작성하지 않으면 무한 루프에 빠질 위험이 있으므로 주의해야 합니다.


이하의 내용은 "while 반복문의 사용 예제"에 대한 구체적인 예시와 설명입니다.

 

while 반복문의 사용 예제

 

기본 사용 예

카운터 변수를 사용하는 기본적인 while 반복문 예제는 다음과 같습니다. 이 예제에서는 카운터 변수 i가 1부터 시작하여 5가 될 때까지 (5를 포함하여) 반복해서 숫자를 출력하는 코드를 보여줍니다.

i = 1  # 카운터 변수 초기화
while i <= 5:  # 카운터 변수가 5 이하인 동안 계속 반복
    print(i)  # 현재 카운터 변수의 값 출력
    i += 1  # 카운터 변수를 1 증가

이 코드를 실행하면, 1부터 5까지의 숫자가 차례대로 출력됩니다. 여기서 i += 1은 카운터 변수 i의 값을 1 증가시키는 중요한 부분입니다. 이 줄이 없으면, i의 값이 변하지 않아 무한 루프에 빠지게 됩니다.

 

무한 루프

무한 루프는 조건이 항상 참인 상태에서 반복문이 끝나지 않고 계속 실행되는 것을 말합니다. 무한 루프는 일부러 사용하는 경우도 있지만, 대부분의 경우 프로그램의 실수로 발생합니다.

간단한 무한 루프 예제는 다음과 같습니다:

while True:  # 조건이 항상 참이므로 무한 루프
    print("무한 루프!")  # 반복 실행되는 코드

이 코드는 "무한 루프!"를 끊임없이 출력합니다. 프로그램을 종료하려면 수동으로 중지해야 합니다.

무한 루프를 안전하게 사용하는 방법

무한 루프를 사용하고자 할 때는 안전하게 종료할 수 있는 조건을 포함시켜야 합니다. 예를 들어, 사용자로부터 특정 입력을 받아 무한 루프를 종료하는 방법이 있습니다.

while True:
    user_input = input("종료하려면 'exit'를 입력하세요: ")
    if user_input == 'exit':
        break  # 'exit' 입력 시 반복문 종료
    print("입력한 값: ", user_input)

이 코드는 사용자가 'exit'를 입력할 때까지 무한히 입력을 받습니다. 사용자가 'exit'를 입력하면, if문 안의 break가 실행되어 while 반복문이 종료됩니다.

이렇게 무한 루프를 제어하는 것은, 특히 사용자의 입력을 기다리거나 특정 상황에서만 반복을 종료하고자 할 때 유용합니다. break문을 적절히 사용하여 무한 루프를 안전하게 관리할 수 있습니다.


while 반복문은 유연하고 강력한 반복 구조를 제공하지만, 잘못 사용하면 무한 루프로 인해 프로그램이 멈출 수 있습니다. 이를 방지하고 효율적으로 while문을 사용하기 위한 몇 가지 팁과 주의할 점을 다음과 같이 소개합니다.

 

1. 명확한 종료 조건 설정

  • while 반복문을 사용할 때, 종료 조건이 명확해야 합니다. 종료 조건이 모호하거나 잘못 설정된 경우, 의도치 않게 무한 루프에 빠질 수 있습니다. 따라서 반복문을 시작하기 전, 종료 조건이 완료될 수 있도록 설정되었는지 확인해야 합니다.
 

2. 조건 변경 보장

  • 반복문 내에서 조건을 변경할 수 있는 코드가 반드시 포함되어야 합니다. 조건이 반복문 실행 도중에 변경되지 않는다면, 이는 무한 루프로 이어질 수 있습니다. 변수가 반복문 내에서 적절히 변경되고 있는지 확인하여 종료 조건에 점진적으로 도달하게 설계하는 것이 중요합니다.

    count = 0
    while count < 5:
        print(f"Count is {count}")
        count += 1  # count 변수 증가시켜 종료 조건에 다다를 수 있도록 함
    
 

3. 무한 루프의 적절한 사용

  • 가끔 의도적으로 무한 루프를 사용할 경우가 있습니다. 예를 들어, 사용자 입력을 계속 받거나 파일에서 지속적으로 데이터를 읽어야 하는 서버 프로그램 같은 상황에서는 무한 루프가 유용할 수 있습니다. 하지만 이 경우에도 언제든지 루프를 벗어날 수 있는 '탈출 조건'을 설정해야 합니다. 가령, 특정 입력을 받았을 때 break 키워드를 사용하여 루프를 종료시키는 것입니다.

    while True:
        user_input = input("명령을 입력하세요 (종료하려면 'exit' 입력): ")
        if user_input == 'exit':
            print("프로그램 종료")
            break
        else:
            print(f"입력된 명령: {user_input}")
    
 

4. 타임아웃 설정 고려

  • 무한 루프뿐만 아니라 장시간 실행되는 while 반복문에서는 실행 시간에 제한을 두는 것이 좋습니다. 특히 외부 리소스에 의존하거나 네트워크 요청을 다루는 프로그램의 경우, 예상치 못한 딜레이나 오류로 인해 반복문이 끝나지 않는 상황을 방지할 수 있습니다. Python의 time 모듈을 활용해 일정 시간이 지나면 자동으로 반복문을 종료하는 방법을 고려해볼 수 있습니다.

    import time
    
    start_time = time.time()
    timeout = 10  # 초 단위
    
    while (time.time() - start_time) < timeout:
        print("실행 중...")
        time.sleep(1)  # 1초 대기
    print("시간 초과로 종료")
    

while 반복문은 프로그래밍에서 매우 유용하지만, 위에서 언급한 함정과 주의할 점을 고려하여 안전하고 효율적으로 사용하는 것이 중요합니다.

Previous
for 반복문