for 문이나 while 문을 사용하다 보면 강제로 반복 루프를 빠져나와야 할 때가 있다. 또는 루프를 한번 건너뛰고 반복을 진행해야 할 때도 있다. 이렇게 반복(루프)을 조절하고 싶을 때 break와 continue 문을 사용한다.
1) break
(1) for, while 문과 break
break는 반복문(for 문/while 문)에서 루프를 빠져나올 때 사용한다. 아래 예제에서 for 문의 경우 5번 반복, while 문은 무한 반복을 해야 하지만 break 때문에 1번만 반복하고 멈추게 된다.
for i in range(5): # 5번 반복
print("break 사용법")
break # "break 사용법"을 5번 반복해야 하지만 break로 인해 한 번만 출력
while True: # 무한 반복
print("break 사용법")
break # "break 사용법"을 무한 반복해야 하지만 break로 인해 한 번만 출력
(2) 이중(중첩) for, while 문과 break
만약 for 문이나 while 문이 두 개 쓰인 이중 for 문 또는 while 문의 경우에는 가장 근접한 for와 while 문에 대해서만 루푸에서 탈출한다.
아래의 첫 번째 예제는 break가 두 번째 for 문인 j 값을 제어하고, 두 번째 예제는 첫 번쩨 for 문인 i 값을 제어한다.
# break를 이용해 두 번째 for 문 j 값 제어
for i in range(5): # i는 0부터 4까지 반복
print("i 값:", i)
for j in range(5):
print("j 값:", j) # i가 5번 돌 동안 break로 인해 j는 0만 5번 반복
break
# break를 이용해 첫 번째 for 문 i 값 제어
for i in range(5):
print("i 값:", i) # i는 break로 인해 0만 1번 출력
for j in range(5):
print("j 값:", j) # i 값 0 한번에 대해 0~4까지 출력
break
(3) for/ while 문과 if 문
반복문 for와 while 문은 if 문과 같이 사용되면서 특별한 조건에서만 반복하고 조건에 맞지 않으면 반복을 끝내는 경우가 많다. 또는 역의 경우도 존재한다.
어떤 사람이 손흥민에만 관심이 있고 다른 선수에게는 아무 관심이 없다. 그래서 다른 사람은 그냥 패스하고 ‘손흥민’을 만나면 사인을 받으려고 한다.
players = ["이강인", "조현우", "송범근", "손흥민", "황의조", "조규성"]
for player in players:
if player == "손흥민": # 손흥민 만나면 싸인 받고 반복문 탈출
print("사인해 주세요")
break
else:
print(player, "그냥 지나가세요") # 손흥민이 나올 때까지 다른 선수 패스시킴
2) continue
반복문 안에서 continue를 사용하면 continue 아래의 명령문은 실행하지 않고 건너뛰고 다음 반복을 진행한다. 위의 ‘손흥민’ 예제에서 ‘그냥 지나가세요”라고 말하지 않고 단순히 건너 뛰고 싶다면 다음과 같이 표현할 수 있다.
players = ["이강인", "조현우", "송범근", "손흥민", "황의조", "조규성"]
for player in players:
if player != "손흥민": # 손흥민이 아니면 건너뜀
continue
else:
print(player, "사인해 주세요")
while 문을 이용해 1~100까지 숫자 중 홀수만 프린트하는 스크립트를 작성한다면, 홀수일 때는 프린트 하고 짝수일 때는 continue를 통해 건너 뛰고 다음 수를 투입한다.
i = 0
while i < 100: # i부터 100까지 반복(아래에서 1을 더하기 때문에 100은 미포함)
i += 1 # i를 1씩 증가시킴
if i % 2 == 0: # i를 2로 나눈 나머지가 0이면 짝수
continue # 짝수이면 건너뛰고 다음 i 투입
print(i)
3) break와 continue를 함께 사용
break와 continue를 같이 사용하면 두 실행문의 효과를 한층 잘 이해 할 수 있다. 만약 10페이지를 인쇄하는데 3과 5페이지는 인쇄하지 않고 건너뛰고(continue 사용), 8 페이지에서 종이가 걸려 인쇄가 멈췄다면 break와 같은 작용을 한 것이다.
다음은 회사에서 회장 주재로 회의를 진행하고 있다. A~J 팀장이 참여해 순서대로 돌아가면서 새해 목표를 발표하는데 C와 F 팀장이 출장 중이라 참여하지 못해서 발표를 스킵한다. 한편, H 팀장은 참석을 하면서도 발표 준비를 안해왔다. 그래서 회장이너무 화가나 그 순간 회의를 끝내버렸다. 이를 continue와 break를 이용해 프로그래밍해보자.
teams = ["A","B", "C", "D", "E", "F", "G", "H", "I", "J"]
absence = ["C", "F"] # 출장 간 팀장들
no_prepare = ["H"] # 발표 준비 안한 팀장
for team in teams: # 팀장 10명을 한 명씩 불러와 발표
if team in absence: # 비참여 팀장이 있으면 스킵
continue # 다음 명령문 및 반복문 계속 실행
elif team in no_prepare: # 만약 발표 준비 안한 팀장이 있다면
print(f"여기서 회의 끝! {no_prepare} 팀장은 따로 봅시다.")
break # 반복 종료
print(f"{team}장, 발표하세요")
4) pass
pass 는 아무것도 하지 않고 코드를 계속해서 실행하라는 의미이다. 아무것도 하지 않는 것을 쓰는 이유는 에러를 발생시키지 않기 위해서다. 에러가 발생하면 실행문이 많이 남아 있어도 멈춰버린다.
예를 들어 if 문을 쓰고 실행문을 안쓰면 에러가 뜨지만 실행문 대신 pass를 쓰면 아무 문제 없이 다음 스크립트가 실행된다. 일반적으로 pass 문은 실행문을 작성하고자 반복문, 함수, 클래스, if 문 내부 자리를 임시로 표시해 두는 것이라고 할 수 있다.
for val in range(1, 10):
pass # 나중에 작성할테니 반복하지 말고 일단 넘어가라
'파이썬' 카테고리의 다른 글
[ 코랩과 파이썬 ] 11. python 함수 def 와 매개변수, 전역변수와 지역변수 (2) | 2023.01.13 |
---|---|
[ 코랩과 파이썬 ] 10. python 표준 입출력 input, print (0) | 2023.01.12 |
[ 코랩과 파이썬 ] 8. python 조건 반복문 while, else, 무한 반복 (0) | 2023.01.12 |
[ 코랩과 파이썬 ] 7. python 반복문 for 문, 한 줄 for 문과 if 문 (0) | 2023.01.12 |
[ 코랩과 파이썬 ] 6. python 조건문 if, elif, else, 한 줄 if 문 (0) | 2023.01.12 |