while 문
while 문
개요while
문은 프래밍에서 반복 제어조의 하나로, 특정 조이 참(true
)인 동안 코드 블록을 반복하는 데 사용됩니다. 조건은 각 반복 시작 전에 평가되며, 조건이 거짓(false
)이 되면 반복이 종료됩니다. while
문은 반복 횟수가 사전 정해지지 않은 상황에서 특히 유용하며, 다양한 프로그래밍 언어(C, Java, Python, JavaScript 등)에서 공통적으로 지원하는 핵심 문법 요소입니다.
이 문서에서는 while
문의 기본 구조, 동작 원리, 사용 예시, 주의사항, 그리고 관련된 고급 개념을 다룹니다.
기본 구조
while
문의 일반적인 구조는 다음과 같습니다:
while 조건:
# 조건이 참일 동안 반복할 코드
- 조건: 불리언 표현식(Boolean expression)으로,
true
또는false
를 반환해야 합니다. - 코드 블록: 조건이 참일 경우 실행되는 문장들의 집합입니다. 들여쓰기(인덴트)로 구분됩니다 (Python 기준).
다른 언어에서도 유사한 형태를 취하지만, 구문이 다를 수 있습니다.
예시: Python에서의 while 문
count = 0
while count < 5:
print(f"현재 카운트: {count}")
count += 1
이 코드는 count
가 5보다 작을 동안 반복되며, 출력 결과는 다음과 같습니다:
현재 카운트: 0
현재 카운트: 1
현재 카운트: 2
현재 카운트: 3
현재 카운트: 4
동작 원리
while
문은 다음과 같은 순서로 동작합니다:
- 조건 평가: 반복 시작 전에 조건을 먼저 평가합니다.
- 조건이 참일 경우: 코드 블록을 실행합니다.
- 반복: 코드 블록 실행 후 다시 조건을 평가합니다.
- 조건이 거짓일 경우: 반복을 종료하고 다음 코드로 진행합니다.
이러한 동작 방식은 사전 검사 루프(pre-test loop)라고도 불립니다. 즉, 반복 전에 조건을 확인하므로, 조건이 처음부터 거짓이면 코드 블록이 한 번도 실행되지 않을 수 있습니다.
while 문의 종류 및 변형
1. 무한 루프 (Infinite Loop)
조건이 항상 참인 경우, while
문은 무한히 반복됩니다.
while True:
print("이것은 무한 루프입니다.")
# 종료 조건 없음 → 무한 반복
무한 루프는 [break](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%A0%9C%EC%96%B4%20%ED%9D%90%EB%A6%84/break)
문을 사용해 의도적으로 종료해야 합니다.
while True:
user_input = input("종료하려면 'quit' 입력: ")
if user_input == "quit":
break
2. do-while 문과의 차이
일부 언어(예: C, Java)는 do-while
문을 제공합니다. 이는 사후 검사 루프(post-test loop)로, 조건을 평가하기 전에 코드 블록을 한 번은 반드시 실행합니다.
// C 언어의 do-while 예시
int i = 0;
do {
printf("%d\n", i);
i++;
} while (i < 5);
Python은 do-while
을 직접 지원하지 않지만, while True
와 break
를 조합해 유사한 동작을 구현할 수 있습니다.
주요 사용 사례
1. 사용자 입력 처리
사용자가 특정 값을 입력할 때까지 반복 대기:
password = ""
while password != "1234":
password = input("비밀번호를 입력하세요: ")
print("접속 허용!")
2. 게임 루프
게임 프로그램에서 주로 사용되는 무한 루프 패턴:
game_running = True
while game_running:
# 게임 로직 처리
action = input("행동을 선택하세요 (종료: quit): ")
if action == "quit":
game_running = False
3. 데이터 처리
파일이나 스트림에서 데이터를 모두 읽을 때까지 반복:
line = file.readline()
while line:
process(line)
line = file.readline()
주의사항 및 흔한 실수
1. 무한 루프에 빠지는 경우
조건이 절대 거짓이 되지 않도록 코드를 작성하면 무한 루프가 발생합니다.
count = 0
while count < 5:
print(count)
# count += 1 빠짐 → 무한 출력
2. 조건 업데이트 누락
반복 변수(예: 카운터)를 업데이트하지 않으면 루프가 끝나지 않습니다.
3. 성능 고려
while
루프 내에서 조건 계산이 복잡하거나 I/O 작업이 반복되면 성능 저하가 발생할 수 있습니다. 가능하면 조건을 단순화하고, 불필요한 연산은 피해야 합니다.
관련 개념
개념 | 설명 |
---|---|
break |
루프를 즉시 종료합니다. |
[continue](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%A0%9C%EC%96%B4%20%ED%9D%90%EB%A6%84/continue) |
현재 반복을 건너뛰고 다음 조건 평가로 이동합니다. |
else 블록 (Python) |
while 루프가 정상 종료될 경우 실행됩니다. break 로 종료된 경우 실행되지 않음. |
count = 0
while count < 3:
print(count)
count += 1
else:
print("루프가 정상 종료되었습니다.")
참고 자료 및 관련 문서
관련 문서: - for 문 - 반복문 - 조건문 - 제어 흐름
while
문은 프로그래밍의 기초이자 핵심 요소로, 반복적인 작업을 효율적으로 처리하는 데 필수적인 도구입니다. 올바른 조건 설정과 반복 제어를 통해 강력한 로직을 구현할 수 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.