파이썬에서만 볼 수 있는 특수한 구문 형태인 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문을 이용하면 간단하고 쉽게 구현할 수 있습니다.
'PL (Programming Language) > Python' 카테고리의 다른 글
[Python] 파이썬 for문의 iterable 속성을 통한 순회 (list, tuple, dictionary 등) (0) | 2022.04.18 |
---|---|
[Python] 파이썬 딕셔너리 value로 key 찾는 방법 (0) | 2022.04.13 |
[Python] 파이썬 딕셔너리(Dictionary) 연산 및 메서드 (0) | 2022.04.12 |
[Python] 파이썬 집합(set) 연산 및 메서드 (0) | 2022.04.12 |
[Python] 튜플(Tuple)이란? 튜플 연산과 메서드 (0) | 2022.04.12 |
댓글