본문 바로가기

컴퓨터/파이썬 공부정리

[Python] for ~ else, while ~ else를 사용하는 방법

보통 else를 쓸 경우를 따질 땐 if ~ else만 생각하지만 for loop에서도 else를 사용할 수 있다. 이 때 else는 for loop에서 iterable이 소진되었을 때 else 구문이 실행된다.

예시는 다음과 같다.

for i in range(2, 11):
    for j in range(2, i):
        if i % j == 0:
            print(f'{i}는 {j}의 배수다.')
            break

    else:
        print(f'{i}는 소수다.')

결과:

2는 소수다.
3는 소수다.
4는 2의 배수다. 
5는 소수다.
6는 2의 배수다.
7는 소수다.
8는 2의 배수다.
9는 3의 배수다.
10는 2의 배수다.

다음과 같이 2부터 10까지의 숫자를 불러오면서 만약 i를 i보다 작은 임의의 수로 나눌 수 있다면 'i는 임의의 숫자의 배수다.'를 출력한다. 이 경우 iterable 중간에 break를 하였기 때문에 iterable이 전부 소진되지 않아 else 구문이 실행되지 않았다.

만약 소수라면 for j in range()를 끝내더라도 if 가 성립될 수 없다. 즉 if 구문을 실행시키지 않고 iterable(여기선 range())가 소진되어 for loop를 종료할 때 else 구문이 실행되어 'i는 소수다'를 출력하게 된다.


마찬가지로, while ~ else에서도 else를 사용할 수 있다. while에서 else 구문은 조건이 거짓이 되었을 때 실행된다. 예시는 다음과 같다.

n = 1
while n < 10:
    print(f'{n}은 10 보다 작은 수 입니다.')
    n += 1
else:
    print(f'{n}은 10 이상의 숫자이므로 while을 종료합니다.')

결과:

1은 10 보다 작은 수 입니다.
2은 10 보다 작은 수 입니다.
3은 10 보다 작은 수 입니다.
4은 10 보다 작은 수 입니다.
5은 10 보다 작은 수 입니다.
6은 10 보다 작은 수 입니다.
7은 10 보다 작은 수 입니다.
8은 10 보다 작은 수 입니다.
9은 10 보다 작은 수 입니다.
10은 10 이상의 숫자이므로 while을 종료합니다.

n이 1부터 9까지 인 경우 while의 조건에서 True를 반환하기 때문에 while 내의 코드가 실행되어 'n은 10보다 작은 수 입니다.' 가 출력되었다.

하지만 n = 10일 때, while의 조건에서 False를 반환하므로 while 구문은 종료되고 else 구문이 실행되어 'n은 10 이상의 숫자이므로 while을 종료합니다.'가 출력되었다.

출처:

https://docs.python.org/ko/3/tutorial/controlflow.html

 

4. 기타 제어 흐름 도구 — Python 3.8.5 문서

 

docs.python.org