728x90
반응형
파이썬에서는 대부분의 다른 프로그래밍 언어와 달리 루프에 else 블록을 추가할 수 있다.
for i in range(3):
print('Loop', i)
else:
print('Else block!')
>>>
Loop 0
Loop 1
Loop 2
Else block!
else 블록은 루프 안에서 break 문을 사용하면 실행되지 않는 방식으로 진행된다.
for i in range(3):
print('Loop', i)
if i == 1:
break
else:
print('Else block!')
>>>
Loop 0
Loop 1
일반적으로 비슷한 try/except/else와 같은 구문에서는 else가 '처리할 예외가 없는 경우에 이 블록을 실행하라'는 뜻이다. 따라서 가독성 측면에서 명확하지 않기 때문에 사용하지 않는 것을 권한다. 대신 도우미 함수를 작성하는 형태로 진행한다. 아래는 서로소인지 아닌지 체크하는 코드다.
1. 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. 도우미 함수 사용
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(4, 9)
assert not coprime(3, 6)
첫 번째 방법은 원하는 조건을 찾자마자 빠르게 함수를 반환하는 방식이고 두 번째 방법은 원하는 대상을 찾았는지 나타내는 결과 변수를 도입하는 것이다. 둘 다 코드를 처음 보는 사람에게는 훨씬 명확해 보인다.
728x90
반응형
'언어 > 파이썬' 카테고리의 다른 글
[Effective Python] BETTER WAY 13 - 슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라 (0) | 2023.01.04 |
---|---|
[Effective Python] BETTER WAY 10 - 대입식을 사용해 반복을 피하라 (1) | 2023.01.04 |
[Effective Python] BETTER WAY 7 - range보다는 enumerate를 사용하라 (0) | 2022.12.29 |
[Effective Python] BETTER WAY 6 - 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹해라 (0) | 2022.12.29 |
[Effective Python] BETTER WAY 5 - 복잡한 식을 쓰는 대신 도우미 함수를 작성하라 (0) | 2022.12.28 |