더북(TheBook)

중간 탈출 루프 우리에게 필요한 루프가 forwhile 루프의 제어 구조에 딱 맞지 않는 경우가 종종 있다. 예를 들어 일련의 문장을 수행한 후 어떤 루프 종료 조건이 만족되면 빠져나가고, 그렇지 않으면 나머지 문장들을 실행하길 원하는 경우가 있을 수 있다. 즉 루프 제어 조건을 루프 시작 부분이 아니라 루프 중간에 두어야 하는 경우이다. 루프 종료 조건을 검사하기 전에 루프 일부를 실행해야 하므로, 이런 경우를 중간 탈출 루프(loop and a half)라고 한다. 파이썬에서는 루프를 처리 도중에 빠져나갈 수 있도록 break 문을 제공한다. 파이썬이 break 문을 만나면 가장 안쪽에 있는 루프를 바로 빠져나간다.

예를 들어 단위 원판에 무작위로 분산된 점을 생성하는 문제를 생각해보자. random.random()을 호출해 xy 좌표로 사용하면 원점을 중심으로 가로세로 크기 2인 정사각형 안에 무작위로 분산된 점을 생성할 수 있다. 대부분의 점은 단위 원판 안에 들어갈 것이므로, 원 안에 들어가지 않는 점들만 버리면 된다. 그러나 적어도 점을 최소 하나는 생성해야 하므로 루프-진행 조건이 언제나 참인 while 루프를 만들어, 루프 안에서 2x2 정사각형 안에 들어가는 무작위점 (x, y)을 생성하고, 이 점이 단위 원판 안에 있으면 break 문을 이용해 while 반복문을 빠져나간다.

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

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.