WeniVooks

검색

견고한 파이썬

반복문 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문을 만나 코드 실행이 종료됩니다.

for i in range(100): print(f'{i} 물고기를 잡았습니다.') if i == 5: print('만선입니다. 물고기를 다 잡았습니다.') break else: print('아직 여유가 좀 있지만, 물고기가 더 없는 것 같으니 이정도로 만족하고 돌아갑시다.') print('수고하셨습니다.')

이번에는 바다에 range(5) 마리의 물고기가 있고 배에 실을 수 있는 물고기의 수는 5마리 입니다. 이때, 바다에는 4마리의 물고기 밖에 없기 때문에 조건에 가기 전에 루프가 종료 됩니다.

그렇기 때문에, 조건문 안에 있는 break문이 실행되지 않고 반복문이 종료됩니다. for문이 종료된 후 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 반복문이 모두 실행되어 종료되고 실행할 코드
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('반복문을 종료합니다.')
{"packages":["numpy","pandas","matplotlib","lxml"]}
9.3 break, continue, pass 비교9.5 연습문제