2015년 5월 26일 화요일

파이썬의 break 명령과 for ~ else 구문

 파이썬의 for 반복문 안에서 break 명령을 사용할 수 있는데 이 명령은 즉시 그것이 포함된 가장 안 쪽의 반복문을 빠져 나온다. 다음 반복문을 보자.

for n in lst:
   if n==0:
       break
   print(n)

이것은 lst 안의 요소들을 차례대로 프린트하다가 0이 발견되면 바로 반복을 멈추는 프로그램이다. 만약 lst=[1,2,3,0,4,5] 라면 1,2,3만 출력되고 반복문은 종료될 것이다. 만약 반복문의 중첩되어 있다면 가장 안쪽의 반복문만 빠져 나온다는 점에 유의해야 한다.

파이썬의 for 반복문은 else 명령과 짝을 이룰 수도 있다.

for 변수 in 반복가능자:
   수행문들1
else:
   수행문들2

else 블럭에 포함된 ‘수행문들2’는 for 반복문이 반복형의 마지막 요소까지 모두 반복했을 경우 그 다음에 수행된다. 즉, 모든 반복이 성공적으로 수행된 경우에 한 번 수행된다. 하지만 break문을 만나면 else 구문은 수행되지 않고 for 블럭을 완전히 빠져나간다.

for n in lst:
   if n==0: break
   print(n)
else:
   print(‘There is no 0.’) # break문을 만나지 않았다면 수행된다.

이 예제의 경우 lst 안에 0이 있다면 break를 만나게 되고 따라서  else 블럭은 수행되지 않고 for 반목문을 빠져 나오게 된다.

따라서 for 반복문이 종료된 시점에서 이 종료가 모든 반복을 다 수행한 후의 정상적인 종료인지, 아니면 break 명령에 의한 강제 종료인지에 따라서 수행해야 될 일을 구분할 필요가 있는 경우에 for~else 구문을 사용하면 된다.


댓글 없음:

댓글 쓰기