점프 투 파이썬 DAY9(while문)

정지범·2026년 9월 18일

점프 투 파이썬

목록 보기
11/37

! 앞에서는 조건에 따라 실행할 코드를 결정하는 if문에 대해서 알아보았다.

  • 이번에는 같은 작업을 여러 번 반복할 때 사용하는 while문에 대해서 알아보자.
  • while은 조건이 참인 동안 특정 코드를 계속 반복해서 실행한다.
  • 따라서 while문을 반복문이라고도 한다.
  • 반복 횟수가 정해져 있지 않고 특정 조건을 만족하는 동안 계속 반복해야 할 때 특히 유용하다.

1. while문의 기본 구조

while문의 가장 기본적인 형태는 다음과 같다.

while 조건:
    실행문1
    실행문2
    실행문3
  • 먼저 조건을 검사한다.
  • 조건이 True이면 들여쓰기된 코드를 실행한다.
  • 실행이 끝나면 다시 조건을 검사한다.
  • 조건이 계속 True라면 같은 과정을 반복한다.
  • 조건이 False가 되는 순간 while문이 종료된다.

실행 흐름을 간단하게 표현하면 다음과 같다.

조건 검사
   │
   ├─ True
   │    ↓
   │  코드 실행
   │    ↓
   └────┘
   │
   └─ False
        ↓
      반복 종료

1-1. 간단한 while문

숫자를 1부터 5까지 출력해 보자.

count = 1

while count <= 5:
    print(count)
    count += 1

실행 결과

1
2
3
4
5

풀이

처음 count에는 1이 저장되어 있다.

count = 1

조건은 다음과 같다.

count <= 5

처음에는

1 <= 5

↓

True

이므로 while문 안의 코드가 실행된다.


print(count)

으로 1을 출력하고

count += 1

을 실행한다.

따라서

count = 1

↓

count = 2

가 된다.


다시 while문의 조건을 검사한다.

2 <= 5

↓

True

다시 코드를 실행한다.

이러한 과정을 반복하면

1 → 2 → 3 → 4 → 5

가 출력된다.


마지막으로

count = 6

이 되면

6 <= 5

↓

False

가 되어 반복문이 종료된다.




2. 변수 값을 증가시키기

while문에서는 반복 횟수를 제어하기 위해 변수의 값을 증가시키거나 감소시키는 경우가 많다.

다음 두 표현은 같은 의미이다.

count = count + 1
count += 1

예를 들어

count = 3
count += 1

을 실행하면

3 + 1

↓

4

가 된다.


다음과 같은 축약 표현도 사용할 수 있다.

a += 1
a -= 1
a *= 2
a /= 2

각각 다음과 같은 의미이다.

a += 1  → a = a + 1

a -= 1  → a = a - 1

a *= 2  → a = a * 2

a /= 2  → a = a / 2

while문에서는 특히 += 1 형태를 매우 자주 사용한다.




3. while문 반복 과정 이해하기

다음 코드를 살펴보자.

number = 0

while number < 3:
    number += 1
    print(number)

실행 결과

1
2
3

실행 과정을 표로 보면 다음과 같다.

number조건조건 결과실행 후 number
00 < 3True1
11 < 3True2
22 < 3True3
33 < 3False종료

while문을 이해할 때는 다음 3가지를 순서대로 확인하면 된다.

1. 현재 변수의 값은 무엇인가?

2. 조건식이 True인가 False인가?

3. 반복문 안에서 변수 값이 어떻게 변하는가?



4. 사용자 입력과 while문

while문은 사용자가 특정 값을 입력할 때까지 계속 입력을 받는 프로그램에서도 사용할 수 있다.

number = 0

while number != 3:
    number = int(input("숫자 3을 입력하세요: "))

print("종료합니다.")

처음 number는 0이다.

number = 0

조건은

number != 3

이다.

0 != 3

↓

True

이므로 입력을 받는다.


사용자가 1을 입력하면

1 != 3

↓

True

이므로 다시 반복한다.


사용자가 3을 입력하면

3 != 3

↓

False

가 되면서 while문이 종료된다.


아직 input()을 자세히 배우지 않았다면 다음 정도로 이해하면 된다.

input()

→ 사용자에게 값을 입력받음

int(input())

→ 입력받은 문자열을 정수로 변환




5. while문 강제로 빠져나가기 - break

while문의 조건이 아직 True이더라도 반복문을 즉시 종료하고 싶을 때가 있다.

이때 사용하는 것이 break이다.

break

5-1. break 기본 예제

count = 0

while True:
    count += 1
    print(count)

    if count == 5:
        break

실행 결과

1
2
3
4
5

풀이

먼저

while True:

는 조건이 항상 True이므로 계속 반복한다.

하지만

if count == 5:
    break

가 존재한다.


count가 5가 되면

count == 5

↓

True

가 되어

break

가 실행된다.

따라서 while문이 즉시 종료된다.


실행 흐름은 다음과 같다.

count = 1 → 계속

count = 2 → 계속

count = 3 → 계속

count = 4 → 계속

count = 5
   ↓
break
   ↓
반복 종료



6. break를 사용하는 간단한 자판기

커피가 3잔 남아 있다고 생각해 보자.

coffee = 3

while True:
    print("커피를 판매합니다.")

    coffee -= 1

    print(f"남은 커피: {coffee}잔")

    if coffee == 0:
        print("커피가 모두 소진되었습니다.")
        break

실행 결과

커피를 판매합니다.
남은 커피: 2잔

커피를 판매합니다.
남은 커피: 1잔

커피를 판매합니다.
남은 커피: 0잔
커피가 모두 소진되었습니다.

풀이

처음 커피는 3잔이다.

coffee = 3

커피를 한 잔 판매할 때마다

coffee -= 1

을 실행한다.

따라서

3 → 2 → 1 → 0

으로 감소한다.


coffee가 0이 되면

if coffee == 0:

이 참이 되어

break

가 실행된다.

즉, break는 반복문 자체를 종료한다.




7. while문의 처음으로 돌아가기 - continue

break가 반복문을 완전히 종료한다면 continue는 조금 다르다.

continue는 현재 반복에서 아래 코드를 실행하지 않고 while문의 처음으로 돌아간다.

continue

7-1. 홀수만 출력하기

1부터 10까지의 숫자 중 홀수만 출력해 보자.

number = 0

while number < 10:
    number += 1

    if number % 2 == 0:
        continue

    print(number)

실행 결과

1
3
5
7
9

풀이

다음 조건을 확인한다.

number % 2 == 0

숫자를 2로 나누었을 때 나머지가 0이면 짝수이다.

2 % 2 = 0

4 % 2 = 0

6 % 2 = 0

따라서 짝수일 경우

continue

가 실행된다.

그러면 아래에 있는

print(number)

를 실행하지 않고 바로 while문의 처음으로 돌아간다.


예를 들어 number = 2라면

2 % 2 == 0

↓

True

↓

continue

↓

print(number) 실행 X

↓

while 조건으로 이동

따라서 홀수만 출력된다.




8. break와 continue의 차이

두 문장은 반복문의 흐름을 변경한다는 공통점이 있지만 역할은 완전히 다르다.

명령어역할
break반복문 자체를 종료
continue현재 반복만 건너뛰고 다음 반복으로 이동

간단하게 표현하면 다음과 같다.

break

반복 반복 반복
     ↓
   break
     ↓
    종료

continue

반복
 ↓
continue
 ↓
처음으로
 ↓
다음 반복

! break와 continue

break
→ while문 밖으로 나감

continue
→ while문 처음으로 돌아감



9. 무한 루프

조건이 항상 True라면 while문은 끝없이 반복된다.

이를 무한 루프(infinite loop)라고 한다.

기본 형태는 다음과 같다.

while True:
    실행할 코드

9-1. 무한 루프 예제

while True:
    print("계속 반복됩니다.")

이 코드는

계속 반복됩니다.
계속 반복됩니다.
계속 반복됩니다.
계속 반복됩니다.
...

처럼 계속 실행된다.


왜냐하면 조건이

True

로 고정되어 있기 때문이다.

True

↓

항상 참

↓

계속 반복

9-2. 무한 루프는 나쁜 것일까?

무한 루프 자체가 잘못된 것은 아니다.

실제 프로그램에서도 다음과 같은 상황에서 사용할 수 있다.

사용자 입력 계속 대기

서버 요청 대기

게임 실행

메뉴 프로그램

이벤트 처리

다만 대부분 특정 조건에서 빠져나갈 수 있도록 break를 함께 사용한다.

while True:
    command = input("종료하려면 q 입력: ")

    if command == "q":
        break

즉,

while True:

와

break

는 함께 사용하는 경우가 많다.




10. 무한 루프가 실수로 발생하는 경우

while문을 작성할 때 가장 많이 하는 실수 중 하나가 조건에 사용한 변수의 값을 변경하지 않는 것이다.

다음 코드를 보자.

number = 1

while number <= 5:
    print(number)
  • number는 계속 1이다.
  • 따라서 조건은 항상 다음과 같다.
1 <= 5

↓

True

결국 1이 계속 출력된다.


올바르게 작성하려면 변수의 값을 변경해야 한다.

number = 1

while number <= 5:
    print(number)
    number += 1

실행 결과

1
2
3
4
5

! while문을 만들 때는 반드시 조건이 언젠가는 False가 될 수 있는지 확인하자.




11. while-else문

파이썬에서는 while문 뒤에 else를 붙일 수도 있다.

while 조건:
    실행문
else:
    실행문
  • while문의 조건이 자연스럽게 False가 되어 종료되면 else가 실행된다.
  • 하지만 break로 강제로 종료하면 else는 실행되지 않는다.

11-1. 정상 종료하는 경우

count = 1

while count <= 3:
    print(count)
    count += 1
else:
    print("반복이 정상적으로 끝났습니다.")

실행 결과

1
2
3
반복이 정상적으로 끝났습니다.

마지막에

count = 4

가 되면서

4 <= 3

↓

False

가 되어 정상적으로 종료되었다.

따라서 else가 실행된다.




12. break로 종료하면 while-else는?

이번에는 break를 사용해 보자.

count = 1

while count <= 5:
    if count == 3:
        break

    print(count)
    count += 1
else:
    print("반복이 정상적으로 끝났습니다.")

실행 결과

1
2
  • count가 3이 되면 break가 실행된다.
  • 따라서 while문이 강제로 종료된다.
  • 이 경우 else는 실행되지 않는다.

정리하면 다음과 같다.

종료 방법while의 else 실행
조건이 False가 되어 종료O
break로 종료X

while-else는 자주 사용하는 문법은 아니지만 반복문이 끝까지 정상적으로 수행되었는지 확인할 때 사용할 수 있다.




13. 중첩 while문

while문 안에 또 다른 while문을 작성할 수도 있다.

이를 중첩 while문이라고 한다.

while 조건1:
    while 조건2:
        실행문

13-1. 간단한 구구단

2단과 3단을 출력해 보자.

dan = 2

while dan <= 3:
    number = 1

    while number <= 9:
        print(f"{dan} x {number} = {dan * number}")
        number += 1

    dan += 1

일부 실행 결과

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
...
2 x 9 = 18

3 x 1 = 3
3 x 2 = 6
...
3 x 9 = 27

13-2. 실행 구조 이해하기

바깥쪽 while문은 dan을 담당한다.

dan = 2

↓

dan = 3

안쪽 while문은 각각의 단에서

1 ~ 9

까지 반복한다.


따라서 구조는 다음과 같다.

dan = 2

    number = 1
    number = 2
    number = 3
    ...
    number = 9


dan = 3

    number = 1
    number = 2
    number = 3
    ...
    number = 9

즉, 바깥쪽 반복 1번마다 안쪽 반복이 처음부터 끝까지 실행된다.




14. 중첩 while문의 break

중첩된 반복문에서 break를 사용하면 가장 가까운 반복문 하나만 종료한다.

i = 1

while i <= 3:
    j = 1

    while j <= 5:
        if j == 3:
            break

        print(i, j)
        j += 1

    i += 1

안쪽 while문의

break

는 안쪽 while문만 종료한다.

바깥쪽 while문까지 동시에 종료되는 것은 아니다.

바깥 while
│
└─ 안쪽 while
      │
      └─ break
          ↓
      안쪽 while 종료

바깥 while은 계속 실행

중첩 반복문에서 continue 역시 가장 가까운 반복문에 적용된다고 생각하면 된다.




15. while문과 if문 함께 사용하기

실제 프로그램에서는 while문과 if문을 함께 사용하는 경우가 많다.

number = 0

while number < 10:
    number += 1

    if number == 5:
        print("5를 찾았습니다.")
        break

실행 결과

5를 찾았습니다.

역할을 나누어 생각하면 쉽다.

while
→ 반복할지 결정

if
→ 반복 중 특정 상황인지 판단

break
→ 반복 종료

이처럼 제어문은 서로 조합해서 사용할 수 있다.

while 조건:
    if 조건:
        break

또는

while 조건:
    if 조건:
        continue

형태를 매우 자주 사용한다.




16. 초보자가 자주 하는 실수

16-1. 변수 증가를 빼먹기

count = 1

while count <= 5:
    print(count)

❌ count가 계속 1이므로 무한 반복된다.


올바른 코드

count = 1

while count <= 5:
    print(count)
    count += 1

16-2. continue 전에 변수 증가를 하지 않기

다음 코드를 보자.

number = 0

while number < 10:
    if number == 5:
        continue

    number += 1
  • number가 5가 되면 continue가 실행된다.
  • 아래의 number += 1이 실행되지 않는다.
  • 따라서 number는 계속 5이다.
number = 5

↓

continue

↓

number = 5

↓

continue

↓

무한 반복

다음처럼 증가 작업의 위치를 조절해야 한다.

number = 0

while number < 10:
    number += 1

    if number == 5:
        continue

    print(number)

16-3. break와 continue 혼동하기

break
→ 반복문 종료

continue
→ 현재 반복 건너뜀

둘의 역할을 확실하게 구분하자.


16-4. 조건 뒤 콜론 빼먹기

잘못된 코드

while count < 10
    count += 1

올바른 코드

while count < 10:
    count += 1

16-5. 들여쓰기 실수

while count < 10:
    print(count)
        count += 1

❌ 들여쓰기 깊이가 다르다.


다음처럼 맞춰야 한다.

while count < 10:
    print(count)
    count += 1



17. while문 실행 흐름 한눈에 보기

다음 코드를 기준으로 전체 실행 흐름을 살펴보자.

number = 0

while number < 5:
    number += 1

    if number == 3:
        continue

    if number == 5:
        break

    print(number)

number = 1

1 < 5 → True

number == 3 → False

number == 5 → False

1 출력

number = 2

2 < 5 → True

number == 3 → False

number == 5 → False

2 출력

number = 3

number == 3

↓

True

↓

continue

↓

print() 건너뜀

number = 4

4 출력

number = 5

number == 5

↓

True

↓

break

↓

while문 종료

실행 결과

1
2
4

이 예제를 이해하면 while, if, continue, break의 관계를 한 번에 이해할 수 있다.




18. while문 핵심 정리

이번 장에서 가장 중요한 내용을 정리하면 다음과 같다.

while 기본 구조

while 조건:
    실행문
조건 True
→ 반복

조건 False
→ 종료

변수 증가

count += 1

는

count = count + 1

과 같은 의미이다.


break

break

→ 반복문을 즉시 종료한다.


continue

continue

→ 현재 반복의 남은 코드를 건너뛰고 다음 반복으로 이동한다.


무한 루프

while True:
    실행문

→ 조건이 항상 참이므로 계속 반복한다.

보통

break

와 함께 사용한다.


while-else

while 조건:
    실행문
else:
    실행문

→ 조건이 거짓이 되어 정상적으로 반복을 마치면 else 실행

→ break로 종료하면 else 실행 X


중첩 while문

while 조건1:
    while 조건2:
        실행문

→ 바깥쪽 반복 한 번마다 안쪽 반복이 실행된다.


! while문에서 반드시 기억해야 할 핵심

while문은 조건이 참인 동안 코드를 반복해서 실행한다.

조건 확인
  │
  ├─ True
  │    ↓
  │  코드 실행
  │    ↓
  └─ 다시 조건 확인

  └─ False
       ↓
      종료

가장 기본적인 형태는 반드시 기억하자.

while 조건:
   실행문

그리고 while문에서는 변수의 값이 어떻게 변하는지 확인하는 것이 매우 중요하다.

count += 1

와 같은 코드가 없다면 조건이 계속 참이 되어 무한 루프가 발생할 수도 있다.

반복문의 흐름을 제어하는 두 명령어도 확실하게 기억하자.

break
→ 반복문 종료

continue
→ 현재 반복을 건너뛰고 다음 반복

마지막으로

while True:

는 항상 참이므로 무한히 반복되며, 실제 프로그램에서는 특정 조건에서 break를 사용해 종료하는 방식으로 자주 활용한다.

while문을 볼 때는 항상 다음 3가지를 순서대로 확인하면 이해하기 쉽다.

1. 반복 조건이 무엇인가?

2. 반복할 때 어떤 값이 변하는가?

3. 언제 조건이 False가 되거나 break가 실행되는가?

이 세 가지만 추적하면 대부분의 while문 실행 결과를 직접 계산할 수 있다.

profile
성실하자:)

0개의 댓글