Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 for 루프에서 else 문 활용하기: 실행 원리와 예제 완벽 정리

이 글에서는 파이썬 3.x(및 이전 버전)에서 지원하는 루프-else(loop-else) 문에 대해 알아봅니다. 특히 for 루프와 else 문이 어떤 방식으로 실행되는지 예제를 통해 자세히 살펴보겠습니다.

대부분의 프로그래밍 언어에서 else는 if-else 쌍으로만 사용할 수 있습니다. 하지만 파이썬은 for 루프에도 else 기능을 적용할 수 있다는 독특한 특징을 가지고 있습니다.

여기서 중요한 규칙이 하나 있습니다. 루프의 else 블록은 루프가 정상적으로 종료되었을 때만 실행됩니다. 만약 break 문처럼 루프를 강제로 빠져나가는 경우에는 인터프리터가 else 문을 건너뛰므로 실행되지 않습니다.

그럼 몇 가지 예제를 통해 루프-else 문을 더 깊이 이해해 보겠습니다.

예제 1: 정상 종료되는 For-Else 구조

코드

for i in ['T','P']:
    print(i)
else: # 루프 else 문
    print("Loop-else statement successfully executed")

출력 결과

T
P
Loop-else statement successfully executed

예제 2: 강제 종료되는 For-Else 구조

코드

for i in ['T','P']:
    print(i)
    break
else: # 루프 else 문
    print("Loop-else statement successfully executed")

출력 결과

T

설명 − 예제 1에서는 for 루프가 리스트 ['T','P']의 모든 요소를 끝까지 순회한 후 정상적으로 종료되었기 때문에 else 문이 실행됩니다. 반면 예제 2에서는 break 문으로 루프가 강제 종료되었기 때문에 else 문이 실행되지 않고 'T'만 출력된 후 프로그램이 끝납니다.

이 두 예제를 통해 루프가 강제로 종료되면 루프-else 문은 실행되지 않는다는 사실을 명확히 확인할 수 있습니다.

이번에는 조건에 따라 루프-else 문이 실행되기도 하고 그렇지 않기도 하는 실전적인 예제를 살펴보겠습니다.

예제 3: if-else 조건문과 함께 사용하기

코드

def pos_nev_test():
    for i in [5, 6, 7]:
        if i >= 0:
            print("Positive number")
        else:
            print("Negative number")
            break
    else:
        print("Loop-else Executed")

# 메인 함수
pos_nev_test()

출력 결과

Positive number
Positive number
Positive number
Loop-else Executed

설명 − 리스트 [5, 6, 7]의 모든 숫자가 양수이므로 if-else 구조 안의 else 블록은 한 번도 실행되지 않습니다. 따라서 break 없이 루프가 정상 종료되고, 최종적으로 루프-else 문이 실행됩니다.

그렇다면 for 루프의 리스트를 [7, -1, 3]으로 바꾸면 어떻게 될까요? 출력 결과는 다음과 같이 달라집니다.

출력 결과

Positive number
Negative number

i가 -1일 때 if 조건이 거짓이 되어 내부 else 블록이 실행되고, 'Negative number'를 출력한 뒤 break 문으로 루프가 강제 종료됩니다. 결국 루프-else 문은 실행되지 않습니다.

결론

이 글에서는 파이썬의 루프-else 문이 동작하는 원리와 다양한 구현 방식을 살펴보았습니다. 루프-else는 리스트나 컬렉션에서 특정 값을 검색할 때 값을 찾지 못한 경우의 처리 로직을 간결하게 작성할 수 있게 해주는 유용한 기능입니다. 루프가 정상 종료될 때만 else가 실행된다는 핵심 규칙만 기억하면 됩니다.