티스토리 뷰

이번에 배울 내용은 반복문의 흐름을 제어하는 continue 와 break 입니다. 개념부터 설명드리면 continue 는 더 이상 아래 명령들을 실행하지 않고 다음 반복대상으로 넘어갈 때 사용하며, break 는 즉시 반복문을 탈출하는 데 사용합니다.

 

예를 들어서, 나도고등학교에서 선생님이 학생들에게 책을 읽힌다고 가정하겠습니다. 출석번호 1번부터 10번까지 총 10명의 학생들이 있고 순서대로 한 문단씩 책을 읽는데 2번과 5번 학생들이 결석을 했다고 합니다. 결석한 학생은 교실에 없으니 책을 읽지 못하겠죠? 그럼 1번 학생이 책을 읽은 다음에는 2번을 건너뛰고 3번 학생이 책을 읽어야 하고, 4번 학생이 책을 읽은 다음에는 5번을 건너뛰고 6번 학생이 책을 읽어야합니다.

1번 2번 (결석) 3번 4번 5번 (결석) 6번 7번 8번 9번 10번

이를 코드로 작성해보겠습니다.

absent = [2, 5] # 결석한 학생 출석번호

for student in range(1, 11): # 출석번호 1~10번
    if student in absent: # 결석했으면 책을 읽지 않고 다음 학생으로 넘어가기
        continue
    print("{0}, 책을 읽어봐".format(student))

실행시켰을 때의 출력 결과르 보면 2번과 5번 학생은 선생님이 책을 읽으라고 하지 않고 건너뛰었네요.

1, 책을 읽어봐
3, 책을 읽어봐
4, 책을 읽어봐
6, 책을 읽어봐
7, 책을 읽어봐
8, 책을 읽어봐
9, 책을 읽어봐
10, 책을 읽어봐

이런 식으로 반복문 내에서 conitnue 를 만나면 그 이후에 있는 명령들은 실행하지 않고 바로 다음 반복대상으로 넘어가게 된답니다.

 

2명의 결석 학생들을 제외한 학생들이 순서대로 열심히 책을 읽습니다. 그런데 저런, 7번 학생은 깜빡하고 책을 가져오지 않았다고 하네요. 하필이면 이 선생님은 다른 모든 것은 용서해도 학생이 책을 가져오지 않을 때에는 호랑이처럼 돌변하는 아주 무시무시한 분이라고 합니다. 얼마나 무섭냐면, 수업시간이 아직 끝나지도 않았는데 바로 수업을 끝내고 학생을 교무실로 데려간다네요.

 

코드로 한 번 적어볼까요? 위 코드를 조금 수정하겠습니다.

absent = [2, 5] # 결석한 학생 출석번호
no_book = [7] # 책을 가져오지 않은 학생 출석번호

for student in range(1, 11): # 출석번호 1~10번
    if student in absent: # 결석했으면 책을 읽지 않고 다음 학생으로 넘어가기
        continue
    elif student in no_book: # 책을 가져오지 않았으면 바로 수업 종료 (반복문 탈출)
        print("오늘 수업 여기까지. {0}는 교무실로 따라와".format(student))
        break
    print("{0}, 책을 읽어봐".format(student))

실행 결과는 이렇습니다.

1, 책을 읽어봐
3, 책을 읽어봐
4, 책을 읽어봐
6, 책을 읽어봐
오늘 수업 여기까지. 7는 교무실로 따라와

어휴... 보기만 해도 무섭네요. 1, 3, 4, 6 번 학생은 책을 읽으라고 하다가 7번 학생이 책을 가져오지 않은 것을 알아차리시자 바로 수업을 끝내고 교무실로 호출을 하십니다.

 

자, 이렇게 break 를 만나면 아직 반복대상이 남아 있건 말건 상관없이 그 즉시 반복문을 탈출하게 됩니다. 8번 학생부터는 책을 읽지도 못했는데 말이죠.

 

예제가 다소 험악했지만 자칫 반복문을 잘못 사용했다가는 결석한 학생에게도 책을 읽으라는 불필요한 명령을 수행하거나, 심지어 무한루프에 빠질 수도 있는 상황에서 continue 와 break 를 적절히 이용하여 흐름을 제어할 수 있답니다.

 

그나저나 7번 학생은 괜찮을까요?

'파이썬 강의 > 기본편' 카테고리의 다른 글

[파이썬 기본편] 6-6.퀴즈 #5  (14) 2021.02.20
[파이썬 기본편] 6-5.한 줄 for  (2) 2021.02.19
[파이썬 기본편] 6-3.while  (2) 2021.02.17
[파이썬 기본편] 6-2.for  (0) 2021.02.16
[파이썬 기본편] 6-1.if  (5) 2021.02.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함