반복문 else
1. 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 # 반복문이 모두 실행되어 종료되고 실행할 코드
for 변수 in 범위:
pass # 반복 실행할 코드
else:
pass # 반복문이 모두 실행되어 종료되고 실행할 코드
바다에 100마리의 물고기가 있고 배에 실을 수 있는 물고기의 수는 5마리라고 가정하도록 하겠습니다.
물고기 5마리를 잡으면 물고기를 더 이상 싣지 못하니 ‘만선입니다. 물고기를 다 잡았습니다.’ 라는 메시지를 띄워줍니다. 이후 break문을 만나 코드 실행이 종료됩니다.
이번에는 바다에 range(5)
마리의 물고기가 있고 배에 실을 수 있는 물고기의 수는 5마리 입니다. 이때, 바다에는 4마리의 물고기 밖에 없기 때문에 조건에 가기 전에 루프가 종료 됩니다.
그렇기 때문에, 조건문 안에 있는 break문이 실행되지 않고 반복문이 종료됩니다. for문이 종료된 후 else문이 실행됩니다.
위 코드에서 1번 예제처럼 break문 없이 정상 종료되었을 때에는 else문이 실행됩니다. 그러나 2번 예제처럼 break문이 있을 경우에는 else문을 실행하지 않게 됩니다.
3. while, else
for와 마찬가지로 while문에서도 else는 정상 종료되었을 때 실행됩니다. 단, 처음부터 while의 조건문이 False일 경우에도 실행한다는 점을 기억해주세요.
while 조건:
pass # 반복 실행할 코드
else:
pass # while 반복문이 모두 실행되어 종료되고 실행할 코드
while 조건:
pass # 반복 실행할 코드
else:
pass # while 반복문이 모두 실행되어 종료되고 실행할 코드
아래의 예시에서는 반복문이 정상 종료됩니다. 따라서 else문이 실행됩니다.
아래와 같은 경우 break문으로 종료가 되기 때문에 else문을 실행시키지 않습니다.