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문은 어떤 때 써야 하나요?

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.'
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.