중간 탈출 루프 우리에게 필요한 루프가 for
나 while
루프의 제어 구조에 딱 맞지 않는 경우가 종종 있다. 예를 들어 일련의 문장을 수행한 후 어떤 루프 종료 조건이 만족되면 빠져나가고, 그렇지 않으면 나머지 문장들을 실행하길 원하는 경우가 있을 수 있다. 즉 루프 제어 조건을 루프 시작 부분이 아니라 루프 중간에 두어야 하는 경우이다. 루프 종료 조건을 검사하기 전에 루프 일부를 실행해야 하므로, 이런 경우를 중간 탈출 루프(loop and a half)라고 한다. 파이썬에서는 루프를 처리 도중에 빠져나갈 수 있도록 break
문을 제공한다. 파이썬이 break
문을 만나면 가장 안쪽에 있는 루프를 바로 빠져나간다.
예를 들어 단위 원판에 무작위로 분산된 점을 생성하는 문제를 생각해보자. random.random()
을 호출해 x
와 y
좌표로 사용하면 원점을 중심으로 가로세로 크기 2
인 정사각형 안에 무작위로 분산된 점을 생성할 수 있다. 대부분의 점은 단위 원판 안에 들어갈 것이므로, 원 안에 들어가지 않는 점들만 버리면 된다. 그러나 적어도 점을 최소 하나는 생성해야 하므로 루프-진행 조건이 언제나 참인 while
루프를 만들어, 루프 안에서 2x2
정사각형 안에 들어가는 무작위점 (x, y)
을 생성하고, 이 점이 단위 원판 안에 있으면 break
문을 이용해 while
반복문을 빠져나간다.

▲ 그림 1.3.12 단위 원판 안의 무작위 점