다른 프로그래밍 언어와 달리 파이썬은 루프가 반복 수행하는 내부 블록 다음에 else추가 가능
장점은 처리할 예외가 없는 경우 이 블록을 실행하라는 의미를 갖고 있기에 루프가 끝나고 실행이 가능하다
for i in range(3):
print('Loop', i)
else:
print('Else block!')
#결과
Loop 0
Loop 1
Loop 2
Else block!
for i in range(3):
print('Loop', i)
if == 1:
break
else:
print('Else block!')
# 결과
Loop 0
Loop 1
for x in []:
print('이 줄은 실행되지 않음')
else:
print('For Else block!')
# For Else block!
while False:
print('이 줄은 실행되지 않음')
else:
print('While Else block!')
#While Else block!
예를 들어, 두 수가 서로소인지 알아보려고 할 때, 공약수일 가능성인 모든 수를 이터레이션 하면서 두 수룰 나눌 가능성이 있는지에 대해서 검사하면 됩니다.
모든 가능성을 검사 후 루프가 끝나는데, 루프가 break를 만나지 않으면 두 수가 서로소이므로 else 블록 실행
a = 4
b = 9
for i in range(2, min(a,b) + 1):
print('검사 중', i)
if a % i ==0 and b % i ==0:
print('서로소 아님')
break
else:
print('서로소')
#결과
검사 중 2
검사 중 3
검사 중 4
서로소
첫 번째: 원하는 조건을 찾자마자 빠르게 함수 반환하는 방식
def coprime(a, b):
for i in range(2, min(a, b) + 1):
if a % i == 0 and b % i ==0:
return False
return True
assert coprime(4, 9)
assert not coprime(3, 6)
두 번째: 루프 안에서 원하는 대상을 찾았는지 나타내는 결과 변수를 도입
def coprime(a, b):
is_coprime = True
for i in range(2, min(a, b) + 1):
if a % i == 0 and b % i ==0:
is_coprime = False
break
return is_coprime
assert coprime_alternate(4, 9)
assert not coprime_alternate(3, 6)
파이썬은 for나 while루프에 속한 블록 바로 뒤에 else블록을 허용하는 특별 문법 제공
루프 뒤에 오는 else 블록은 루프가 반복되는 도중에 break를 만나지 않은 경우에만 실행
동작이 직관적이지 않고 혼동을 이야기하므로 루프 뒤에 else블록 사용 말기