본문 바로가기
PL (Programming Language)/Python

[Python] 파이썬 for - else, while - else 구문 사용법과 예시

by jangThang 2022. 4. 21.
반응형

 파이썬에서만 볼 수 있는 특수한 구문 형태인 for - else문과 while - else문을 알아보겠습니다.

 

[ Contents ]

     

     

    1. For - else

    for i in range(n):
        if i == 4:
            break
    else:
        print("n은 4이하 입니다.")

     for문에서의 else문은 "break 등으로 중간에 끊기지 않고, 전부 순회했을 때 실행되는 코드'입니다. 만약 break문으로 중간에 끊겼다면, else문은 실행되지 않습니다.

     

     마지막 순회에서 맨 마지막에 break를 만나도, else문은 실행되지 않습니다. 즉, break문 실행 여부에 따라 else문의 실행이 결정됩니다.

     

     break와 동일한 기능을 하는 exit() 등을 쓰더라도, break를 만나지 않았기 때문에 else문이 실행됩니다.

     

     

     

    2. While - else문

    while 조건문:
        if 종료 조건:
            break
    else:
        print("break문이 실행되지 않음")

     for문과 동일하게, while문도 else문과 함께 사용할 수 있습니다. 

     

     

     break문이 사용되지 않고 정상적으로 반복을 마치면, else문이 실행됩니다.

     

     만약 break문이 작동했다면, else문은 실행되지 않습니다.

     

     

     

    3. 예시

     그렇다면, else문은 언제 쓰는 걸까요?

     

    2022.06.05 - [Algorithm] - [탐색/BFS] 백준 2644 촌수계산 - 파이썬(Python)

    while queue:
        x, cnt = queue.popleft()
        if x == end:
            print(cnt)
            break
    
        for i in graph[x]:
            if not visited[i]:
                queue.append((i, cnt+1))
                visited[i] = True
    else:
        print(-1)

     else문은 조기 종료가 안 되었을 때, 실행할 코드를 작성하는 데에 유리합니다. 예를 들어, 위 bfs 탐색 코드는 x가 end 지점을 발견하면 break(조기 종료) 됩니다. 하지만, 탐색하는 end가 없을 경우도 있겠죠.

     그 경우에는 break문을 만나지 못하므로, else문으로 -1(찾는 값없음)을 쉽게 반환할 수 있습니다.

     

     

    while queue:
        is_find = False
        if x == end:
            print(cnt)
            is_find = True
            break
    
    if not is_find:
        print(-1)

     만약 else문을 쓰지 않는다면, bool 변수를 하나 더 써야 합니다. 가독성을 위해서라도, 굳이 변수를 늘릴 필요는 없겠죠? 파이썬의 철학대로, else문을 이용하면 간단하고 쉽게 구현할 수 있습니다.

     

    star가 되고나서 Tistory

    반응형

    댓글