본문 바로가기
Programming Language/Python

파이썬 - (반복문 中 while 문)

by Notorious Coder 2023. 7. 9.

프로그래밍을 할 때 제어문만큼 많이 사용하는 것이 바로 반복문이다. 반복문에는 while 문과 for 문 두 가지가 있는데 while 문에 대해서 먼저 알아보겠다. 요즘 미국 연준의 금리가 계속 인상하고 있는 와중에 "물가 상승률이 2%에 도달할 때까지 금리를 올린다." 라는 예시의 코드를 만들어보고 while 문에 대해 이야기를 해보자. 

 

 

 

 

 

 

코드를 살펴보면, "인플레이션 수치가 2%보다 높은 동안(while)에 기준 금리를 2%씩 인상하면 인플레이션 수치가 1.5% 감소한다. 그리고 인플레이션 수치가 2% 이하가 된다면 금리 인상을 중단한다." 라는 의미이다. 인상 횟수 4번까지는 인플레이션 수치가 2%보다 높다는 조건문에 부합하기 때문에 while 문을 수행하고 5번 인상하는 시점에서 인플레이션 수치가 1.5%이므로 2%보다 높다는 조건문이 거짓으로 판정되어 while 문을 빠져나간다. 여기서 InterestRate += 2 구문은InterestRate = InterestRate + 2 와 동일한 구문이다. 

 

 

 

while 문은 조건문이 "참" 인 동안에 구문 안의 내용을 반복적으로 수행한다. 그런데 코드를 작성하다가 실행시켰을 때 결과가 끊기지 않고 미친듯이 쏟아져 나올 때가 있다. 이런 경우는 어떻게 해야 할까? 바로 break 문이 억제기 역할을 해준다. 20마리의 생선을 파는 상인의 예시에서 break 문 사용 유무에 따른 결과를 보자. 

 

 

 

무한 루프는 Ctrl + c 단축키를 통해 빠져나갈 수 있다

 

 

보다시피 money = 1 이어서 조건문은 항상 참이다. while 반복문은 조건문이 참인 동안에 반복적으로 수행하는 것이기 때문에 해당 코드는 무한 루프를 돌게 된다. 하지만 break 문을 입력해주면 만약 남아 있는 생선이 0마리일 때 즉시 코드 밖으로 빠져나갈 수 있다.

 

 

이렇게 while 문 밖으로 빠져나갈 수 있는 break 문이 있는 반면, while 문을 빠져나가지 않고 다시 조건문으로 돌아가게 만들어야 하는 경우도 존재한다. 이때 쓰이는 것은 continue 문이다. 책 p.139에 있는 1부터 10까지의 숫자 중에서 3의 배수를 뺀 나머지 값을 출력하는 문제를 보자. 1부터 10까지의 숫자 중에서 3의 배수는 3, 6, 9로 총 3개이다. 그렇다면 숫자 1에서부터 1씩 증가시키면서 3의 배수에 해당하는지 안하는지 계속해서 조건문으로 확인해야 한다. 코드로 구현해보자면 아래와 같이 만들 수 있다.

 

 

 

 

number % 3, 즉 number를 3으로 나눈 나머지가 0이라면(=3의 배수라면) 조건문 number < 10 으로 돌아가라는 의미이다. while 문 안쪽의 문장을 쭉 수행하다가 continue 문을 만나게 되면 print(number)를 실행하지 않고 다시 while 문의 맨 처음으로 돌아간다는 말이다. 

 

 

 

 

파이썬 프로그래밍에 관한 글은 "이지스퍼블리싱"의 "Do it!, 점프 투 파이썬"이라는 책을 학습하고 정리한 것입니다.