이런 식으로 동작하는 이유는 루프를 사용해 검색을 수행할 경우, 루프 바로 뒤에 있는 else 블록이 그와 같이 동작해야 유용하기 때문이다. 예를 들어 두 수가 서로소(두 수의 공약수가 1밖에 없음)인지 알아보고 싶다고 하자. 이런 경우에는 공약수일 가능성이 있는 모든 수를 이터레이션하면서 두 수를 나눌 수 있는지 검사하면 된다. 모든 가능성을 검사하고 나면 루프가 끝난다. 루프가 break를 만나지 않으면 두 수가 서로소이므로 else 블록이 실행된다.
a = 4 b = 9 for i in range(2, min(a, b) + 1): print('검사 중', i) if a % i == 0 and b % i == 0: print('서로소 아님') break else: print('서로소') >>> 검사 중 2 검사 중 3 검사 중 4 서로소