Welcome to the Matrix

019. while 반복문을 이용한 파이썬 반복문 본문

Python/PythonBasic

019. while 반복문을 이용한 파이썬 반복문

haru.keiko 2021. 1. 6. 23:52

오늘은 파이썬 반복문 그 첫 번째 시간으로 'while 반복문'에 대해서 알아보겠습니다. 

파이썬 while 반복문 썸네일

 

반복

만약 동일한 문장을 두 번 실행해야 한다면 어떻게 할까요?

여러 가지 방법이 있겠지만, 가장 먼저 떠오르는 방법은 문장을 복사해서 그 문장 아래 붙여 넣고 실행하는 것입니다. 

하지만, 동일한 문장을 10번, 아니 100번을 실행한다면 어떻게 해야 할까요?

복사와 붙여 넣기를 10번, 또는 100번을 반복해서 해야 할까요??

프로그래밍을 이런 식으로 해야만 한다면, 전 프로그래밍을 여기서 관둘 것 같습니다. ㅎㅎ

 

대부분의 프로그래밍 언어는 위와 같이 특정 반복되는 작업을 간단하게 처리하기 위해 '반복문'이라는 것을 사용합니다.

그리고, 파이썬 또한 반복문을 언어적인 측면에서 제공을 합니다. 파이썬에서 '반복문'이란 어떠한 작업을 반복해서 수행해야 할 필요가 있을 때 사용하는 파이썬의 문법과 같은 것입니다. 

 

반복문에는 대표적으로 'while 반복문''for 반복문'이 있습니다.

그중, 이번 시간에는 'while 반복문'에 대해서 알아보겠습니다. 

 

while 반복문

while 반복문은 특정 문장들을 얼마만큼 반복해야 할지 모르는 상황에서 사용할 수 있는 반복문입니다.

즉 특정 '조건(조건식)'을 만족하는 동안(while) 계속 '반복 작업'을 하는 문장인 것입니다. 

while 반복문은 특정 조건(조건식)을 만족하는 경우에만 반복을 하는 문장입니다.

 

while 문의 구조는 다음과 같습니다. 

while 조건문 :
    수행할 문장들..

while 문의 조건문이 참인 동안에만 while문에 종속된 문장들(수행할 문장들)을 반복해서 수행하는 것입니다. 

만일 조건문이 거짓이라면, 더 이상 while문을 실행하지 않고 while문 이후의 파이썬 코드를 실행합니다. 

참고로 while문도 if 조건문과 동일하게 문장 뒤에 콜론(:)을 붙입니다. 그리고, 콜론 이후에 while문에 종속되는 문장들을 블록(block)으로 처리하기 위해 들여 쓰기를 합니다. 

 

다음 예를 통해 while 문이 어떤 것인지 감을 잡아보도록 하겠습니다. 

IDLE를 열고 아래와 같이 소스 코드를 입력해봅시다. 

i = 0
while i < 5:
	print('Hello, world~!')
	i += 1

파이썬 while 반복문 기본 예제

 

while문의 핵심인 조건문이 i < 5입니다. i가 5보다 작을 때(참)만, while문에 종속된 블록을 실행하는 것입니다. 

즉, i는 0부터 1씩 증가를 하게 되고 어느 시점, 즉 5와 같아지는 시점엔 더 이상 while문을 실행하지 않고 빠져나오게 됩니다.

i += 1은 i = i + 1과 동일한 문장입니다.

 

이번엔 조금 다른 예를 살펴보겠습니다.  

IDLE의 새 파일을 열고 아래와 같이 소스 코드를 입력하고 실행합니다. 

repeat_cnt = int(input('얼마나 반복할까요? '))
count = 1

while count <= repeat_cnt:
    print(f'It is repeated {count}times.')
    count += 1

반복할 횟수 조건을 입력받아 반복하는 while 반복문

 

암호와도 같아 보이는 코드의 내용을 굳이 설명하지 않더라도 대충 읽어 내려가면 무슨 내용인지 감을 잡을 수 있을 것입니다. 

 

위 소스코드에서 핵심 부분인 while문의 조건문은 'count <= repeat_cnt'입니다. count 값이 repeat_cnt 값 보다 작거나 같을 동안만 while문 블록의 내용을 반복을 하겠다는 의미입니다. 

먼저, repeat_cnt라는 변수에 반복을 위한 입력값을 정수로 입력받습니다. 

그리고, count 변수의 값이 reapeat_cnt의 값보다 작거나 같을 동안 while 문을 반복합니다. 

while문의 블록 마지막에 count 변수를 1 증가(count += 1)시킵니다. 즉, while문을 한 번 돌 때마다 count 값이 1씩 증가합니다. count 값이 1씩 증가하기 때문에, 언젠가는 repeat_cnt 값 보다 커질 때가 올 것입니다. 바로 이때 while문의 반복을 멈추고 빠져나오게 되는 것입니다.

 

결과를 보도록 하죠.

반복 횟수 조건을 입력받아 반복하는 while문의 결과

 

반복 횟수를 위해 입력값으로 3을 입력하면, 세 번 반복을 하며 동일한 문장을 실행합니다.

또, 입력값으로 5를 입력하면 다섯 번을 반복하며 동일한 문장을 실행합니다. 

 

break, while문 탈출

while문의 핵심은 바로 '조건문'의 조건이 참이냐 거짓이냐에 의해서 while 반복문을 실행하거나 실행하지 않거나 하는 것입니다.

while문의 조건문이 처음부터 거짓이라면, 절대 while 반복문이 실행되지 않을 것입니다. 

그리고 while문의 조건문이 처음부터 참이라면, 그 조건문이 거짓이 되기 전까지 while 반복문을 실행하는 것이죠.

하지만, 만일 while문의 조건문이 처음부터 참이지만, 절대 거짓이 되지 않는 상황이라면?

이러한 상황을 '무한반복'이라고 합니다.

 

무한 반복되는 프로그램을 보면, 프로그램이 멈춰서 아무것도 안 하는 것처럼 보입니다. 어떤 경우, 실수로 무한반복에 빠지도록 프로그램을 작성한 경우, 아주 큰 문제가 발생할 수도 있습니다. 
무한반복을 빠져나오기 위해서는 키보드의 Ctrl + C 키를 입력해 빠져나올 수 있습니다.  

프로그래밍 언어에서는 이렇게 반복문의 조건문에서 거짓이 되지 않는 경우에도 while문을 빠져나올 수 있는 방법을 제공합니다. 

'break'라고 하는 것인데요, 말 그대로 while문에 브레이크를 거는 것이죠.

 

아래와 같은 코드를 작성하면, 무한 반복에 빠집니다. 

count = 1

while count > 0:
	print('go forever~!')
	count += 1

while문의 조건문이 count 값이 0보다 클 경우에 참으로 판단하고 while문 블록의 내용을 실행하게 되는데, count 값은 1부터 계속 증가만 하기 때문에 항상 0보다 큰 값이 됩니다. 

 

이럴 경우, 아래와 같이 while문 내부에서 특정 조건을 주어 반복문을 빠져나올 수 있습니다. 

count = 1

while count > 0:
	print('go~! until count is 5!!')
	if count >= 5:
		break
	count += 1

while문에서 break를 사용해 반복문을 빠져나오는 예제

 

비록, while문의 조건문이 항상 참이지만 반복문 내부에서 count의 조건이 특정 조건을 만족할 경우, 'break'라는 매직 키워드를 사용해서 반복문을 빠져나올 수 있는 것입니다. 

 

이 외에도, while문의 조건문과 상관없이 반복문 내에서 특정 조건을 만족할 경우 while 반복문을 빠져나오기 위해서도 'break'를 사용합니다. 

'break'는 매우 중요하고 유용한 키워드이기 때문에 반드시 기억을 하고 있어야 합니다. 

while문의 조건문과 상관없이 반복문 내의 특정 조건을 만족할 경우 while문을 빠져나오기 위해 'break'를 사용합니다. 

 

continue, while문의 처음으로 이동

while문의 조건문이 참이어서 while문의 블록을 실행한다고 가정합시다. 

프로그래밍을 하다 보면, while문의 블록을 실행하는 도중 중간에 어떤 조건을 만족해서 그 조건 다음의 문장을 실행하지 않고, 다시 while문의 처음으로 돌아가야 할 상황이 발생할 수 있습니다. 

이럴 때 사용하는 것이 'continue'라는 것입니다. 

 

예를 들어, 1부터 10까지 홀수를 출력하는 프로그램을 만든다고 가정합시다. 

1, 3, 5, 7, 9를 출력해야 합니다. 하지만, 2, 4, 6, 8, 10의 경우에는 출력을 하지 않고 넘어가야 합니다. 

물론 이 프로그램의 경우 아주 간단하기 때문에 다른 방법을 사용할 수 있을 것입니다. 하지만, 이런 경우 'continue'라는 키워드를 사용하면 아주 유용하게 사용할 수 있습니다.

 

다음 예를 살펴봅시다. 

number = 0

while number < 10:
	number += 1
	if number % 2 == 0:
		continue
	print(number)

while 반복문에서 continue 를 사용하는 예제

 

number가 10보다 작을 동안 while문을 반복합니다. 또, 반복할 때마다 number의 값을 1씩 증가합니다. 

그리고, 만약 number이 짝수라면(number%2 == 0) 더 이상 아랫부분을 실행하지 않고, while문의 블록 처음으로 돌아갑니다. 

while문의 블록을 실행하는 중간에 while문 블록의 처음으로 돌아가기 위해서는 'continue' 키워드를 사용합니다.

 

coutinue도 종종 사용되긴 합니다만, break보다 많이 사용되지는 않는 듯합니다. 

그래도 함께 알아두면 아주 유용하게 사용할 수 있습니다. 

 

이상으로 파이썬 반복문 중 'while 반복문'에 대해서 살펴봤습니다. 

다음번엔 아마도 파이썬 반복문 중 'for 반복문'에 대해서 살펴볼 것 같습니다.