while문 기본 문법부터 무한 반복, break, continue, 중첩 반복문까지 초보자가 자주 헷갈리는 부분 정리
설명
Python의 while 반복문은 특정 조건이 참인 동안 코드를 계속 실행하는 반복문입니다. for문과 달리 반복 횟수를 미리 정하지 않아도 되기 때문에 사용자 입력을 반복해서 받거나, 특정 조건이 만족될 때까지 작업을 수행하는 프로그램에서 유용하게 사용할 수 있습니다. 이 글에서는 Python while문의 기본 구조부터 break, continue, 무한 반복과 실전 활용 방법까지 초보자도 쉽게 이해할 수 있도록 예제와 함께 정리합니다.
Python while 반복문이란?
Python으로 프로그램을 작성하다 보면 같은 코드를 여러 번 실행해야 하는 경우가 있습니다.
예를 들어 다음과 같은 상황입니다.
- 사용자가 올바른 값을 입력할 때까지 다시 입력받기
- 특정 조건이 만족될 때까지 계산하기
- 메뉴를 계속 보여주면서 사용자의 선택 받기
- 게임에서 특정 조건이 끝날 때까지 반복하기
- 서버나 프로그램에서 특정 작업을 계속 확인하기
이럴 때 사용하는 대표적인 문법이 반복문입니다.
Python에서는 대표적으로 for문과 while문을 사용할 수 있습니다.
그중 while문은 조건이 참인 동안 계속 반복한다는 특징이 있습니다.
가장 기본적인 형태는 다음과 같습니다.
while 조건식:
반복해서 실행할 코드
예를 들어 다음 코드를 살펴보겠습니다.
count = 1
while count <= 5:
print(count)
count += 1
실행 결과는 다음과 같습니다.
1
2
3
4
5
count <= 5라는 조건이 참인 동안 print(count)가 실행됩니다.
그리고 반복할 때마다 count의 값을 1씩 증가시키기 때문에 5가 출력된 후 조건이 거짓이 되어 반복이 종료됩니다.
while문의 실행 원리
while문을 이해할 때 가장 중요한 것은 조건을 먼저 확인하고 반복한다는 점입니다.
다음 코드를 기준으로 살펴보겠습니다.
count = 1
while count <= 3:
print(count)
count += 1
실행 과정은 다음과 같습니다.
| 순서 | count | 조건 count <= 3 | 실행 |
|---|---|---|---|
| 1 | 1 | 참 | 1 출력 |
| 2 | 2 | 참 | 2 출력 |
| 3 | 3 | 참 | 3 출력 |
| 4 | 4 | 거짓 | 반복 종료 |
즉, while문은 대략 다음 순서로 동작합니다.
조건 확인 → 참이면 코드 실행 → 다시 조건 확인 → 참이면 다시 실행
이 과정이 반복됩니다.
따라서 while문을 사용할 때는 언젠가 조건이 거짓이 되도록 만드는 것이 매우 중요합니다.
Python while문 기본 문법
가장 기본적인 문법은 다음과 같습니다.
while 조건식:
실행할 코드
예를 들어 숫자가 5보다 작은 동안 반복할 수 있습니다.
number = 1
while number < 5:
print(number)
number += 1
결과:
1
2
3
4
여기서 number += 1이 중요한 역할을 합니다.
반복할 때마다 number를 증가시켜야 결국 number < 5 조건이 거짓이 되기 때문입니다.
while문에서 가장 중요한 것은 조건 변화
초보자가 while문을 처음 사용할 때 가장 많이 하는 실수 중 하나가 조건에 사용되는 값을 변경하지 않는 것입니다.
예를 들어 다음 코드를 보겠습니다.
number = 1
while number <= 5:
print(number)
이 코드는 문제가 있습니다.
number의 값이 계속 1로 유지되기 때문입니다.
따라서 number <= 5는 계속 참이고 반복문이 끝나지 않습니다.
이처럼 반복문이 종료되지 않는 상황을 무한 반복이라고 합니다.
올바르게 작성하려면 다음처럼 값을 변경해야 합니다.
number = 1
while number <= 5:
print(number)
number += 1
이제 number가 1 → 2 → 3 → 4 → 5 → 6으로 변경되면서 조건이 거짓이 되고 반복이 종료됩니다.
while 무한 반복이란?
while문에서는 의도적으로 반복을 끝내지 않고 계속 실행하는 형태도 사용할 수 있습니다.
대표적인 방법이 다음과 같습니다.
while True:
실행할 코드
True는 항상 참이므로 이 상태에서는 반복이 계속됩니다.
그렇다면 반복을 어떻게 종료할 수 있을까요?
이때 사용하는 것이 break입니다.
break로 while문 종료하기
break는 현재 실행 중인 반복문을 즉시 종료합니다.
예를 들어 다음과 같이 사용할 수 있습니다.
while True:
number = int(input("숫자를 입력하세요: "))
if number == 0:
break
print("입력한 숫자:", number)
사용자가 숫자를 입력하면 계속 출력하다가 0을 입력하는 순간 break가 실행됩니다.
그러면 while문 전체가 종료됩니다.
이 방식은 실제 프로그램에서도 매우 자주 사용됩니다.
예를 들어 사용자가 종료 명령을 입력할 때까지 메뉴를 계속 보여주는 프로그램을 만들 수 있습니다.
while문과 break를 이용한 메뉴 만들기
간단한 콘솔 메뉴를 생각해보겠습니다.
while True:
print("1. 조회")
print("2. 등록")
print("3. 종료")
choice = input("메뉴를 선택하세요: ")
if choice == "1":
print("조회 기능 실행")
elif choice == "2":
print("등록 기능 실행")
elif choice == "3":
print("프로그램을 종료합니다.")
break
이 프로그램은 사용자가 3번을 선택하기 전까지 메뉴를 계속 보여줍니다.
이처럼 while True와 break를 함께 사용하면 “특정 조건이 발생할 때까지 반복”하는 프로그램을 만들기 편리합니다.
continue란?
while문에서는 break 외에도 continue라는 키워드를 자주 사용합니다.
둘의 차이를 먼저 기억해두면 이해하기 쉽습니다.
| 키워드 | 역할 |
break | 반복문 자체를 종료 |
continue | 현재 반복을 건너뛰고 다음 반복으로 이동 |
예를 들어 1부터 5까지 숫자를 출력하되 3만 건너뛰어 보겠습니다.
number = 0
while number < 5:
number += 1
if number == 3:
continue
print(number)
결과:
1
2
4
5
3이 되었을 때 continue가 실행되면서 해당 반복의 나머지 코드를 실행하지 않고 다음 반복으로 넘어갑니다.
while문에서 continue를 사용할 때 주의할 점
continue를 사용할 때는 특히 조심해야 하는 부분이 있습니다.
다음 코드는 문제가 발생할 수 있습니다.
number = 1
while number <= 5:
if number == 3:
continue
number += 1
print(number)
number가 3이 되면 continue가 실행됩니다.
그런데 number += 1이 실행되기 전에 다음 반복으로 넘어갑니다.
결과적으로 number는 계속 3인 상태가 되고 무한 반복에 빠질 수 있습니다.
따라서 continue를 사용할 때는 반복 조건에 영향을 주는 값이 제대로 변경되는지 확인해야 합니다.
while문에서 조건을 여러 개 사용할 수 있을까?
물론 가능합니다.
Python의 논리 연산자를 사용하면 여러 조건을 조합할 수 있습니다.
예를 들어 다음과 같이 작성할 수 있습니다.
number = 1
while number <= 10 and number % 2 == 1:
print(number)
number += 2
and, or, not 등의 논리 연산자를 활용하면 다양한 조건을 만들 수 있습니다.
다만 조건이 지나치게 복잡해지면 코드를 이해하기 어려워질 수 있으므로, 여러 조건을 사용할 때는 변수 이름과 조건식을 명확하게 작성하는 것이 좋습니다.
while문 안에 while문을 사용할 수 있을까?
가능합니다.
이를 중첩 반복문이라고 합니다.
예를 들어 다음과 같은 구조입니다.
i = 1
while i <= 3:
j = 1
while j <= 3:
print(i, j)
j += 1
i += 1
바깥쪽 while문이 한 번 실행될 때마다 안쪽 while문이 여러 번 실행됩니다.
중첩 반복문은 구구단, 좌표 탐색, 2차원 데이터 처리와 같은 문제에서 활용할 수 있습니다.
다만 반복문이 여러 겹으로 중첩되면 실행 횟수가 크게 증가할 수 있으므로 필요한 경우에만 사용하는 것이 좋습니다.
while문과 for문은 무엇이 다를까?
Python을 처음 배우면 while과 for 중 어떤 것을 사용해야 하는지 헷갈릴 수 있습니다.
가장 간단하게 구분하면 다음과 같습니다.
| 상황 | 추천 |
| 정해진 범위를 반복 | for |
| 리스트 등의 데이터를 하나씩 처리 | for |
| 특정 조건이 유지되는 동안 반복 | while |
| 사용자가 특정 값을 입력할 때까지 반복 | while |
| 반복 횟수가 명확하지 않은 경우 | while |
예를 들어 1부터 10까지 출력하는 것은 반복 횟수가 명확하기 때문에 for문이 자연스럽습니다.
for number in range(1, 11):
print(number)
반면 사용자가 0을 입력할 때까지 계속 숫자를 입력받는 상황이라면 while문이 더 적합합니다.
while True:
number = int(input("숫자 입력: "))
if number == 0:
break
while문 실전 예제: 올바른 입력을 받을 때까지 반복하기
while문의 대표적인 활용 사례가 사용자가 올바른 값을 입력할 때까지 다시 입력받는 것입니다.
예를 들어 1부터 10 사이의 숫자만 입력받는 프로그램을 만들 수 있습니다.
while True:
number = int(input("1부터 10 사이의 숫자를 입력하세요: "))
if 1 <= number <= 10:
print("올바른 입력입니다.")
break
print("잘못된 입력입니다. 다시 입력하세요.")
사용자가 20을 입력하면 다시 입력을 요구합니다.
5를 입력하면 조건을 만족하므로 break가 실행되고 반복이 종료됩니다.
이처럼 while문은 언제 끝날지 미리 정해져 있지 않은 반복 작업에 특히 잘 어울립니다.
while문 실전 예제: 숫자 맞히기
간단한 숫자 맞히기 게임에서도 while문을 사용할 수 있습니다.
예를 들어 정답을 7이라고 가정해보겠습니다.
answer = 7
while True:
guess = int(input("숫자를 맞혀보세요: "))
if guess == answer:
print("정답입니다!")
break
elif guess < answer:
print("더 큰 숫자입니다.")
else:
print("더 작은 숫자입니다.")
사용자가 정답을 맞힐 때까지 프로그램이 반복됩니다.
이런 방식은 게임뿐만 아니라 특정 조건을 만족할 때까지 계속 작업하는 프로그램을 이해하는 데 좋은 예제입니다.
while문에서 자주 발생하는 실수
1. 조건을 변경하지 않는 경우
가장 흔한 실수입니다.
number = 1
while number <= 5:
print(number)
반복 조건에 사용되는 number가 변경되지 않기 때문에 반복이 끝나지 않습니다.
다음처럼 수정해야 합니다.
number = 1
while number <= 5:
print(number)
number += 1
2. =와 ==를 혼동하는 경우
Python에서 =은 값을 저장할 때 사용하고, ==는 두 값이 같은지 비교할 때 사용합니다.
예를 들어 다음과 같습니다.
number = 10
이는 number에 10을 저장한다는 의미입니다.
반면 다음은 두 값이 같은지 확인합니다.
number == 10
while의 조건에서는 비교 연산자가 필요한 경우가 많기 때문에 =과 ==를 구분해야 합니다.
3. 들여쓰기를 잘못하는 경우
Python에서는 들여쓰기가 코드의 구조를 결정합니다.
다음처럼 작성해야 합니다.
while number <= 5:
print(number)
number += 1
while 다음 줄의 코드는 들여쓰기되어 있어야 반복문의 내부 코드로 인식됩니다.
4. break가 어느 반복문을 종료하는지 확인하지 않는 경우
중첩 반복문에서는 break가 특히 중요합니다.
break는 현재 위치에서 가장 가까운 반복문 하나를 종료합니다.
따라서 반복문이 여러 겹으로 구성되어 있다면 원하는 반복문이 종료되는지 확인해야 합니다.
while문을 사용할 때 기억해야 할 핵심
while문을 처음 배울 때는 복잡한 예제보다 다음 세 가지를 먼저 기억하면 충분합니다.
① while은 조건이 참인 동안 반복한다
while 조건:
반복할 코드
② 반복 조건이 언젠가는 거짓이 되어야 한다
반복에 사용되는 변수를 적절하게 변경해야 합니다.
③ 필요하면 break로 즉시 종료할 수 있다
while True와 break를 함께 사용하면 특정 조건이 발생할 때까지 반복하는 프로그램을 쉽게 만들 수 있습니다.
Python while 반복문 핵심 정리
while문은 단순히 코드를 여러 번 실행하는 문법이 아니라 조건에 따라 반복을 제어하는 도구입니다.
특히 다음과 같은 상황에서 유용합니다.
- 반복 횟수를 정확하게 알 수 없는 경우
- 특정 조건이 만족될 때까지 반복해야 하는 경우
- 사용자 입력을 계속 받아야 하는 경우
- 프로그램의 메뉴를 반복해서 보여주는 경우
- 특정 작업을 계속 확인해야 하는 경우
반대로 단순히 1부터 100까지 반복하는 것처럼 반복 범위가 명확하다면 for문이 더 읽기 쉬운 경우가 많습니다.
결국 while과 for 중 어느 것이 더 좋은 것이 아니라 문제의 형태에 맞는 반복문을 선택하는 것이 중요합니다.
자주 묻는 질문(FAQ)
Q. while문은 몇 번 반복할지 미리 정해야 하나요?
아닙니다.
for문과 달리 while문은 반복 횟수를 미리 정하지 않아도 됩니다.
조건이 참인 동안 계속 실행되기 때문에 반복 횟수를 알 수 없는 상황에서 특히 유용합니다.
Q. while True는 무조건 무한 반복인가요?
기본적으로 while True 자체는 계속 반복됩니다.
하지만 반복문 내부에서 break가 실행되면 반복을 종료할 수 있습니다.
따라서 while True와 break를 함께 사용하는 것은 정상적인 Python 프로그래밍 방식입니다.
Q. while문과 for문 중 무엇을 먼저 공부해야 하나요?
둘 다 기본적인 반복문이지만, Python 입문 단계에서는 for문을 먼저 이해한 뒤 while문을 배우면 비교하기 쉽습니다.
for문은 반복 범위나 데이터를 순회하는 데 편리하고, while문은 조건에 따른 반복을 표현하는 데 적합합니다.
Q. while문에서 break와 continue의 차이는 무엇인가요?
break는 반복문 자체를 종료합니다.
반면 continue는 현재 반복에서 남은 코드를 건너뛰고 다음 반복으로 넘어갑니다.
쉽게 기억하면 다음과 같습니다.
break = 반복 종료
continue = 이번 차례 건너뛰기
Q. while문에서 무한 반복이 발생하면 어떻게 해야 하나요?
먼저 while의 조건에 사용되는 변수가 반복 과정에서 제대로 변경되고 있는지 확인해야 합니다.
특히 다음 부분을 확인하면 좋습니다.
- 반복 조건이 무엇인지
- 조건에 사용되는 변수가 변경되는지
continue때문에 변수 변경 코드가 건너뛰어지는지break가 필요한 위치에 있는지
마무리
Python의 while 반복문은 조건이 참인 동안 코드를 반복해서 실행하는 문법입니다.
기본 구조는 간단하지만 실제 프로그램에서는 사용자 입력, 메뉴 시스템, 게임, 데이터 처리 등 다양한 곳에서 활용됩니다.
처음에는 다음 구조만 확실하게 익혀도 충분합니다.
while 조건:
반복할 코드
그리고 반복문을 직접 작성할 때는 항상 한 가지를 확인해보는 것이 좋습니다.
“이 반복은 어떤 조건에서 끝나는가?”
이 질문에 명확하게 답할 수 있다면 while문을 사용할 때 발생하는 무한 반복 문제도 훨씬 쉽게 예방할 수 있습니다.
while문과 break, continue의 관계까지 익혔다면 다음 단계에서는 for문과 range(), 리스트 순회까지 함께 연습해보면 Python의 반복문 구조를 훨씬 탄탄하게 이해할 수 있습니다.