반복문 else
1. else
반복문의 else는 break 없이 정상 종료되었을 때만 실행됩니다. break로 중단된 경우에는 else 블록이 실행되지 않습니다.if문 뿐만 아니라 while, for문에서도 else문을 사용할 수 있습니다. 여기서의 else는 if에서의 else처럼 '그렇지 않으면'이라는 의미 보다는 '그런 다음'이라는 의미가 더 강하기 때문에 then으로 쓰여야 된다는 논의가 있기도 했습니다.
반복문이 break 등에 의해 중단 없이 정상적으로 반복이 종료된 후 특정 코드를 실행하게 해야 할 때 while~else, for~else를 사용할 수 있습니다.
2. for, else
for문에서의 else는 루프가 정상 종료되었을 때나 처음부터 자료형이 비어있었을 때 실행됩니다. 중간에 break문을 만나면 else문은 실행하지 않습니다.
for 변수 in 범위:
pass # 반복 실행할 코드
else:
pass # 반복문이 모두 실행되어 종료되고 실행할 코드
바다에 100마리의 물고기가 있고 배에 실을 수 있는 물고기의 수는 5마리라고 가정하도록 하겠습니다.
물고기 5마리를 잡으면 물고기를 더 이상 싣지 못하니 ‘만선입니다. 물고기를 다 잡았습니다.’ 라는 메시지를 띄워줍니다. 이후 break문을 만나 코드 실행이 종료됩니다.
for i in range(100):
print(f'{i} 물고기를 잡았습니다.')
if i == 5:
print('만선입니다. 물고기를 다 잡았습니다.')
break
else:
print('아직 여유가 좀 있지만, 물고기가 더 없는 것 같으니 이정도로 만족하고 돌아갑시다.')
print('수고하셨습니다.')
이번에는 바다에 물고기가 range(5), 즉 0번부터 4번까지 다섯 마리만 있습니다. 배에 실을 수 있는 물고기는 여전히 5마리인데, i == 5가 되는 순간이 끝내 오지 않습니다. i는 4까지만 올라가고 반복이 끝나기 때문입니다.
그렇기 때문에 조건문 안에 있는 break문이 한 번도 실행되지 않고 반복문이 정상 종료됩니다. 이렇게 끝까지 다 돌고 나면 else문이 실행됩니다.
for i in range(5):
print(f'{i} 물고기를 잡았습니다.')
if i == 5:
print('만선입니다. 물고기를 다 잡았습니다.')
break
else:
print('아직 여유가 좀 있지만, 물고기가 더 없는 것 같으니 이정도로 만족하고 돌아갑시다.')
print('수고하셨습니다.')
위 코드에서 1번 예제처럼 break문 없이 정상 종료되었을 때에는 else문이 실행됩니다. 그러나 2번 예제처럼 break문이 있을 경우에는 else문을 실행하지 않게 됩니다.
3. while, else
for와 마찬가지로 while문에서도 else는 정상 종료되었을 때 실행됩니다. 단, 처음부터 while의 조건문이 False일 경우에도 실행한다는 점을 기억해주세요.
while 조건:
pass # 반복 실행할 코드
else:
pass # while 반복문이 모두 실행되어 종료되고 실행할 코드
아래의 예시에서는 반복문이 정상 종료됩니다. 따라서 else문이 실행됩니다.
n = 0
while n < 5:
print(f'현재 숫자는 {n}입니다.')
n += 1
else:
print('반복문을 종료합니다.')
아래와 같은 경우 break문으로 종료가 되기 때문에 else문을 실행시키지 않습니다.
n = 0
while n < 5:
print(f'현재 숫자는 {n}입니다.')
n += 1
if n > 3:
break
else:
print('반복문을 종료합니다.')