본문 바로가기
언어/Python

[Python 기본 공부정리] 5-2. 제어문-반복문(while)

by 민-Zero 2019. 12. 21.

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 

틀린 부분에 대한 지적은 감사합니다.

반복문이란 조건문과 마찬가지로 주어진 조건식이 True를 반환할 때 해당 코드를 실행한다. 조건문의 경우 1번만 실행하고 빠져나가지만 반복문의 경우 조건식이 False가 될 때까지 계속 반복한다.

 

1. while문

문법)

while 조건식:

    실행 코드

기본구조는 앞서 정리한 if문 에서 if만 while로 바뀐 모습이다. 조건식에 True False를 반환하는 식뿐만 아니라 1이나 "abc" 같은 True, False를 판단할 수 있는 값이 들어가면 해당 반복문은 실행 되게 된다.

 

조건식에 True를 뜻하는 정수 1을 넣어주면 강제로 프로그램을 종료시키기 전까지 조건식이 False가 될 수 없으므로 계속해서 반복되는 무한루프에 빠지게 된다. 따라서 무한루프에 빠지지 않게 하기 위해 원하는 횟수만큼만 동작할 수 있도록 조건식을 잘 조절해야 한다.

 

이 반복문은 count 변수가 10보다 작거나 같아야지 True를 반환해 동작하게 된다. 만약 count += 1 이란 코드가 없다면 count는 계속 1로 조건식이 True만 반환하게 되므로 무한루프에 빠지겠지만 count += 1을 통해 count를 1씩 증가시켜 원하는 횟수만큼 반복하고 조건식이 False가 되어 반복문이 멈추도록 제어할 수 있다. 해당 과정을 확인하면

count 변수 조건식 코드 실행
1 1 <= 10 , True 1 회 반복 출력, count = count + 1
2 2 <= 10 , True 2 회 반복 출력, count = count + 1
3 3 <= 10 , True 3 회 반복 출력, count = count + 1
4 4 <= 10 , True 4 회 반복 출력, count = count + 1
5 5 <= 10 , True 5 회 반복 출력, count = count + 1
6 6 <= 10 , True 6 회 반복 출력, count = count + 1
7 7 <= 10 , True 7 회 반복 출력, count = count + 1
8 8 <= 10 , True 8 회 반복 출력, count = count + 1
9 9 <= 10 , True 9 회 반복 출력, count = count + 1
10 10 <= 10 , True 10 회 반복 출력, count = count + 1
11 11 <= 10 , False 조건식 False 반복문 실행 X

이런 과정을 통해 "10회 반복" 까지만 출력되고 반복문을 빠져나오게 된다. 만약 count += 1 이 print보다 위에 있었다면 결과는 달라진다.

 

"2회 반복"이 제일 먼저 출력되고 "11회 반복"이 제일 나중에 출력된다. 이유는 맨 처음 count가 1을 가리키고 있어 조건식을 통과한 뒤 만나는 코드가 count+=1이기 때문에 바로 2로 바뀌고 print를 만나 2를 출력하게 된다. 그다음 조건식을 확인해도 2 <= 10 이 True이므로 문제없이 진행되고 마지막에 count 가 10일 때 count+=1을 만나 11을 출력한 뒤 조건식이 False가 되어 반복문을 빠져나오게 된다.

이처럼 조건식을 통해 동작 횟수와 기능을 결정하고자 할 때 조건식의 변화를 주는 증감식의 위치 또한 잘 고려해야 한다.   

 

2. while문 제어

조건식이 False를 반환하게 하여 while을 제어할 수 있지만 다른 명령어를 통해 while문을 제어할 수 있는 방법이 있다.

 

break

break구문을 만나게 되면 그 즉시 조건이 True를 반환하고 밑에 더 진행할 코드가 남아 있더라도 반복문을 강제로 빠져나오게 하는 구문이다. 

 

break와 앞에서 정리한 if문을 사용하여 간단한 메뉴창을 생성하였다. while문의 조건식에는 True가 들어가 무한히 반복되어 메뉴를 고르면 해당 메뉴의 기능이 실행되고 다시 메뉴창으로 돌아오게 된다. 하지만 4번 Quit를 고르게 되면 break구문을 만나 조건식이 True여도 강제로 반복문을 빠져나오는 것을 확인할 수 있다.

 

continue

break를 만나면 실행할 코드가 더 남아있어도 실행하지 않고 반복문을 강제로 종료시켰지만 continue를 만나게 되면 그 즉시 더 실행할 코드가 남아 있어도 반복문의 제일 위로 돌아가게 된다.

 

continue를 이용하여 10보다 작은 홀수만 출력하는 기능을 생성하였다. a가 10 미만일 경우에만 조건식이 True를 반환해 동작한다.

처음 a는 0 이므로 조건식은 True를 반환하여 반복문이 동작하게 되고 a+=1을 만나 1이 된다. if문의 조건은 만족하지 않으므로 if문을 건너뛰고 print(a)를 실행하게 된다.

다시 조건식을 확인 1 < 10 이 True를 반환하고 a+=1로 인해 2가 되고 if문을 만나 2로 나눈 나머지가 0이 되어 if 조건을 만족 continue를 만나게 된다. 따라서 뒤에 print라는 실행할 코드가 남아있지만 실행하지 않고 반복문의 제일 위로 돌아가 다시 진행하게 되므로 홀수만 출력하게 된다.

댓글