이번 시간에는 for문에 이어 반복 작업을 할 때 유용한 while문에 대해 알아보겠습니다.
while문의 기본 구조는 다음과 같습니다.
while 조건:
실행문
while문은 조건이 참일 때까지 실행문을 수행합니다. 즉, 조건이 거짓이 될 때는 while문이 종료되는 거죠. 코드를 통해 살펴보도록 하겠습니다.
i = 0
while i < 5:
print(i)
i += 1
# 결과
# 0
# 1
# 2
# 3
# 4
위의 코드의 while문은 i < 5가 참일 때까지 실행문을 수행합니다. 즉, i를 출력하고 i에 1을 더하는 것을 반복하는 것이죠. i가 4가 되면, i값인 4를 출력하고 i에 1을 더해 5로 만듭니다. 그리고 다음 회차에서는 i < 5인 조건이 거짓이 되기에 while문이 종료되죠.
만약 i += 1이라는 코드가 없으면 어떻게 될까요?
i = 0
while i < 5:
print(i)
# 결과: 0이 무한으로 출력되니 ctrl+c로 중단시켜야 합니다.
i값에 변화가 없기 때문에 조건이 항상 참이 되어 print(i)가 계속 실행되게 됩니다. 이처럼 while문을 작성할 경우, 의도한 때에 while문을 벗어날 수 있는 조건을 설정하여 while문이 비효율적으로 반복되지 않게 해야 합니다.
for문에서 break와 continue 구문을 사용하였듯, while문에서도 같은 역할로 사용이 가능합니다.
특정 조건을 만족할 때, break를 사용하게 되면 while문을 더 이상 진행하지 않고 종료할 수 있습니다.
i = 0
n_sum = 0
while i < 10:
i += 1
n_sum += i
if n_sum > 40:
break
print(n_sum)
# 결과: 45
위의 코드를 살펴보면, i가 10이 되기 전까지 i를 증가시키고, 이를 n_sum이라는 변수에 더하는 걸 알 수 있습니다. 즉, n_sum은 i들의 합인 셈이죠. 그리고 그 n_sum이 40을 넘기면, break 구문이 실행되어 while문을 강제로 종료시킵니다. 따라서 i가 9일 때, 합이 45로 40을 넘겨 n_sum은 45가 되죠.
continue 구문을 사용하면 특정 조건을 만족할 때, 아래 실행문을 무시하고 다음 회차로 넘어갈 수 있습니다.
i = 0
n_sum = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
n_sum += i
print(n_sum)
# 결과: 25
위의 코드에서 i가 2로 나눈 나머지가 0일 때, 즉 i가 짝수일 때 continue 구문이 실행됩니다. 그렇기에 continue 구문 아래의 n_sum += i가 실행되지 않죠. n_sum의 결과에서 볼 수 있듯, 짝수일 때는 continue 구문이 실행되었기에, 홀수들의 합인 25가 n_sum의 값으로 출력되었습니다.