for / while 반복문이랑 같은 레벨에서 else는 어떤때 쓰는 건가요?


소스코드

for i in range(10):
    print(i)

    if i == 9:
        print("Too big - I'm giving up!")
        break;
else:
    print("Completed successfully")

발생하는 문제 및 실행환경

이런 코드가 있는데 왜 else를 쓰는지 모르겠습니다.

처음 봤을때는 for문이 시작도 못했으면 (if False등) else문이 실행되는 줄 알았는데

실행하고보니 break를 지우면 else도 실행되고, break를 안지우면 else는 실행이 안되더군요.

for-else문은 어떤 때 써야 하나요?

  • 2016년 02월 15일에 작성됨

조회수 152


1 답변


좋아요
0
싫어요
채택취소하기

for-else 문을 쓰는 경우는 보통 "이터러블안에 어떤 아이템을 찾아. 근데 아무것도 못 찾으면 ..." 의 의미로 씁니다.

found_obj = None
for obj in objects:
    if obj.key == search_key:
        found_obj = obj
        break #아이템을 찾았으면 break - else문은 실행 안됨
else:
    print 'No object found.' #아이템을 못 찾은 경우만 실행됨

이걸 캡슐화해서 함수로 쓰면

def find_obj(search_key):
    for obj in objects:
        if obj.key == search_key:
            return obj

아니면 리스트 내장을 쓰면

matching_objs = [o for o in objects if o.key == search_key]
if matching_objs:
    print 'Found', matching_objs[0]
else:
    print 'No object found.'
  • 2016년 02월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close