보통 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
'컴퓨터 > 파이썬 공부정리' 카테고리의 다른 글
[Python] from enum import Enum으로 Enum 사용하기 (0) | 2020.09.01 |
---|---|
[Python] index() 정리 (0) | 2020.09.01 |
[Python] max(str, key=len) (0) | 2020.08.25 |
[Python] max(str, ...)에 대해서 (0) | 2020.08.25 |
[Python] 'type hint'가 안될 때 (0) | 2020.08.25 |