- [BW 9] for나 while 루프 뒤에 else 블록을 사용하지 말라2024년 10월 22일
- 31514
- 작성자
- 2024.10.22.:07
💡 파이썬에서는 루프가 반복 수행하는 내부 블록 바로 다음에 else 블록을 추가할 수 있다.
루프가 모두 실행되어도 else 블록은 실행된다.
for i in range(3): print('Loop', i) else: print('Else Block!') >>> Loop 0 Loop 1 Loop 2 Else Block!
루프가 한 번도 실행되지 않아도 else 블록은 실행된다.
while False: print('No') else: print('While Else block!') >>> While Else block!
루프 중 break문을 만나서 빠져나오면 else 블록은 실행되지 않는다.
for i in range(3): print('Loop', i) if i == 1: break else: print('Else Block!') >>> Loop 0 Loop 1
이런 식으로 동작하는 이유는 루프를 사용해 검색을 수행할 경우, 루프 바로 뒤에 있는 else 블록이 그와 같이 동작해야 유용하기 때문이다.
하지만 for/else나 while/else는 if/else, try/except와 결이 달라서 헷갈리기 쉽다.
도우미 함수를 사용해 개선해보자
원하는 조건을 찾자마자 함수를 반환
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
루프 안에서 원하는 대상을 찾았는지 나타내는 결과 변수 도입
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
'Book > 파이썬 코딩의 기술' 카테고리의 다른 글
[BW 11] 시퀀스를 슬라이싱하는 방법을 익혀라 (0) 2024.10.22 [BW 10] 대입식을 사용해 반복을 피하라 (0) 2024.10.22 [BW 8] 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라 (0) 2024.10.22 [BW 7] range보다는 enumerate를 사용하라 (3) 2024.10.22 [BW 6] 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라 (0) 2024.10.22 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)