본문 바로가기



개발 도구들/Python

파이썬으로 프로그래밍에 도전하자(5)

이 글의 주요 대상은 이제 프로그래밍에 첫 발을 들여놓는, 프로그래밍의 경험이 없는 분들을 대상으로 합니다.

 

어제는 내 방의 인터넷이 끊어져서 글을 올리지 못했습니다.

결국 연구실에 나와서 작성을 하네요.

 

"파이썬으로 프로그래밍에 도전하자" 다섯 번째 시간입니다.

지난 글에서는 for 문의 다양한 사용방법에 대하여 살펴보았습니다.

오늘은 기본적인 For문의 확장, 또는 변형이라고 할 수 있는 형태에 대하여 알아보겠습니다.

(오늘 다룰 구문도 기본 구문이라고 부르실 수도 있습니다.)


For문은 반복적인 처리를 위해서 사용하는 구문이라고 말씀드렸습니다.
그런데 그런 반복된 처리 속에서 반복 작업을 중단하고 나가야 한다거나 흐름에 변형을 주어야 할 때에는 어떻게 할까요?
세 번째 시간에 설명드린 if ~~ 구문을 이용해서 For 문을 빠져나간다거나.. 반복 작업 속에서 상황에 따라 다른 작업을 선택하도록 할 수도 있습니다.
실제로 많은 경우에 그런 방식으로 For문을 사용하고 있습니다.
파이썬에서도 이런 경우에 대하여 for ~ continue ~ break구문for ~ else 구문을 제공하고 있습니다.

 

사실 continue 구문은 직관적으로 눈에 들어오지 않는 편이어서 좀 헷갈리거나.. 이런 것을 왜 쓰지? 라고 하실 수도 있습니다(저만 그런가요?)

먼저 for ~ continue ~ break 구문을 살펴보겠습니다.
for ~ continue ~ break 구문은 반복문을 수행하던 도중에 어떤 조건을 만나면 반복문을 계속 수행하고, 그 조건을 만족하지 않으면 반복문을 빠져나가도록 하는 구문입니다.

예제 코드를 한 번 보죠.

이전 글에서 보았던 예제 코드에 continue, break를 적용한 예제입니다.

의미는 1, 3, 4, 6, 7 이라는 값을 가진 리스트 area에서 값들을 순서대로 꺼내어 반복문을 실행하라는 의미인데,

1, 3, 4, 6, 7 값이 순서대로 x에 할당되고 해당하는 x 값을 출력하는 코드입니다.

이 때 x를 출력하고 난 다음, 만약 x가 4보다 작은 값이라면 for 구문을 계속 반복하고 x가 4 이상의 값이라면 for 구문을 빠져나가라는 의미입니다.

리스트 area의 세 번째 값인 4가 x에 할당되었을 때, if 문을 만나지만 if 문 이전에 print(x)를 만나기때문에 4까지 출력이 되고 종료하게 됩니다.

 

조금 변형시켜 볼까요?

print(x) 구문을 if 문 안으로 넣어보았습니다.

이번에는 x = 4 인 경우 바로 for 문을 빠져나갔습니다.

그냥 continue 같은 것을 사용하지 않고 빠져나가는 조건만 사용해도 되지 않을까? 라고 생각하실 수 있습니다.

실제로도 continue 구문은 헷갈린다고 빠져나가는 조건만 사용하는 경우도 많이 있습니다.

다음 예제를 보시죠.

if 문에서의 조건만 살짝 바꾸어서 빠져나가는 구문만 적용한 예제입니다.

결과는 처음 본 예제와 같습니다.

 

이렇게 보면 continue 구문은 왜 있는 것일까? 라고 생각하실 수 있지만...뭐.. 그래도 어딘가에 필요하니까 만들어진 구문이겠죠.

어디에 필요한지 한 번 보도록 하죠.

위의 예제를 보면... 분명히 print("continue") 구문이 for문 안에 있습니다.

그렇지만 실제로 출력이 된 적은 없습니다.

continue 구문은 해당 조건을 만족할 경우 반복문을 계속 실행하라는 의미인데.. 중요한 것은 continue 구문 이후의 명령들은 생략하라~ 라는 의미라는 것입니다.

그렇기 때문에 print("continue")는 언제나 생략되어 출력되지 않은 것입니다.

하나 더 볼까요?

위의 예제에서는 if 문에서 다루는 조건은 x가 4보다 작은 경우는 continue, x가 6보다 큰 경우는 break를 만납니다.

그 외의 x에는 if문이 걸려있지 않죠.

그래서 x가 4보다 작은 경우는 print("continue")가 생략되었고 x가 6보다 커지면서 for문을 벗어나 버렸습니다.

그 조건 외에는 print("continue")가 실행된 것을 확인할 수 있습니다.

이런 차이가 있는거죠.

 

그런데 해당 조건을 벗어났다는 것은 위의 조건외의 모든 것이라고 할 수 있기때문에 다음의 예제처럼 구현할 수도 있습니다.

이처럼 각각의 목적이 있는 구문이지만 구현은 프로그래머의 생각에 따라서 다르게 구현될 수 있습니다.

지난 글에서 "정답은 없다"라고 말씀드렸죠.

이런 이야기입니다.

 

 

 

 

 

이번에는 for ~ else 구문을 살펴볼까요?

for ~ else 구문은 반복문이 break 명령에 의해서 중단되지 않은 경우에만 else 안의 명령을 수행하라는 구문입니다.

위의 예제에서는 break 명령이 없습니다.

따라서 print('Finish')는 잘 실행되었습니다.

그럼 중간에 break를 걸어볼까요?

x가 6보다 큰 경우 break를 걸어보았습니다.

print(x) 명령은 if문 이전에 있기 때문에 break는 걸려있지만 이미 출력은 모두 완료되었죠.

그러나 어쨋든 break로 for문이 중단된 것이기때문에 else 구문 안의 print('Finish')는 실행되지 않았습니다.

 

그럼 이렇게 바꿔볼까요?

x가 7보다 큰 경우에 break를 걸었습니다.

그러나 리스트 area의 마지막 값인 7이 x > 7을 만족하지 않았기때문에 if문을 만족하기 전에 for문이 끝나버렸습니다.

break 명령에 걸리지 않은 것입니다.

따라서 "Finish"는 잘 출력되었습니다.

 

여기까지 해서 for ~ continue ~ break 구문과 for ~ else 구문을 살펴보았습니다.

다음 글에서는 또 다른 반복문인 while 문을 공부해 보도록 하겠습니다.

 

 

 

 

반응형