반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코드잇
- HTML
- 런던
- 경사하강법
- 오늘도코드잇
- 코드잇TIL
- Seaborn
- numpy
- 코드잇 TIL
- 선형회귀
- CSS
- matplotlib
- SQL
- sql연습문제
- 코딩공부
- 다항회귀
- 결정트리
- 윈도우함수
- 코딩독학
- 판다스
- 코딩
- for반복문
- 나혼자코딩
- 파이썬
- 행렬
- 데이터분석
- 머신러닝
- 영국석사
- 로지스틱회귀
- 유학생
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(파이썬) for 반복문과 while 반복문에서 break 와 continue 사용하기 본문
728x90
반응형
앞의 글에서 for 반복문과 while 반복문, for 반복문과 while 반복문의 차이점에 대해서 알아보았습니다. 이번 글에서는 반복문이 종료되거나 반복을 통제해야 하는 경우 사용하는 break와 continue에 대해 알아보겠습니다.
🔻(참고) for 반복문🔻
🔻(참고) while 반복문🔻
1. break : 반복문을 종료
- for 반복문은 시퀀스의 모든 요소를 순회하고, while 반복문은 중지 조건이 충족될 때까지 순회합니다.
- 하지만 루프가 종료되어야 하는 시기를 더욱 정밀하게 제어해야 하는 경우가 있습니다.
- 이 경우 break 키워드를 사용합니다.
- break문을 만나면 루프는 즉시 종료됩니다.
- break 키워드는 for 및 while 반복문에서 모두 사용할 수 있습니다.
- 예를 들어, manifest 라는 리스트가 있는 화물선에 화물을 싣고 싶다고 가정해봅시다.
- 이 리스트에는 튜플로 이루어진 항목과 해당 항목의 무게가 있습니다.
- 선박으니 최대 중량 용량이 있으므로 최대 중량 용량에 도달하면 화물을 그만 실어야 한다고 합시다.
manifest = [("bananas", 15), ("mattresses", 24), ("dog kennels", 42), ("machine", 120), ("cheeses", 5)]
- 이를 수행하기 위해 각 항목을 싣고 지금까지 실은 모든 항목의 무게를 추적하는 for 반복문을 사용해야 합니다.
- 코드는 다음과 같습니다.
manifest = [("bananas", 15), ("mattresses", 24), ("dog kennels", 42), ("machine", 120), ("cheeses", 5)]
weight = 0
items = []
for cargo in manifest:
if weight >= 100: # 최대 용량인 100에 도달하는지 확인
break # 100에 도달하면 break문 사용해 화물 추가 중지
else:
items.append(cargo[0]) # 그렇지 않으면 다음 항목 싣기
weight += cargo[1] # 무게 추가하기
print(weight)
print(items)
>>> 211
['bananas', 'mattresses', 'dog kennels', 'machine']
- 여기서 선박은 무게 제한인 100을 크게 초과했습니다.
- break문은 선박에 모든 항목을 추가하는 것은 막았지만 211로 제한을 초과했습니다.
- 위 코드에서는 무엇이 잘못되었는지 확인하기 어렵습니다.
- 여기서 사용할 수 있는 전략은 코드에 print문을 추가하는 것입니다.
- 단계별로 실행될 때 코드에서 어떤 일이 발생했는지에 대한 통찰력을 제공할 수 있습니다.
- 디버깅 코드를 추가하고 다시 작성해보겠습니다
- 디버깅 : 코드에서 오류를 식별하고 제거하는 프로세스
manifest = [("bananas", 15), ("mattresses", 24), ("dog kennels", 42), ("machine", 120), ("cheeses", 5)]
weight = 0
items = []
for cargo in manifest:
print("current weight: {}".format(weight))
if weight >= 100:
print("breaking loop now!")
break
else:
print(" adding {} ({})".format(cargo[0], cargo[1]))
items.append(cargo[0])
weight += cargo[1]
>>> current weight: 0
adding bananas (15)
current weight: 15
adding mattresses (24)
current weight: 39
adding dog kennels (42)
current weight: 81
adding machine (120)
current weight: 201
breaking loop now!
- 위의 코드에서 weight가 100을 초과할 때까지 break문이 실행되지 않았음을 알 수 있습니다.
- 실제로는, 해당 항목이 추가되기 전에 break문을 실행해야 합니다.
- 또한, 선박에 machine 을 싣지 않았다면 cheeses를 실을 수 있었습니다.
- 여기서 알 수 있는 사실은 단순히 반복문을 완전히 벗어나는 것 보다 단순히 반복문의 한 순회를 건너뛰고 싶을때가 있다는 것입니다.
- 여기서, countinue 키워드를 사용합니다.
2. countinue : 반복문의 반복 한 번을 건너뜀
- 아래의 예시에서 우리는 음식 리스트를 순회하고 음식이 과일이면 fruit_count를 1씩 증가시킨다고 합시다.
- 음식에서 과일이 발견되지 않으면 순회를 종료합니다.
- 코드는 아래와 같습니다.
fruit = ["orange", "strawberry", "apple"]
foods = ["apple", "apple", "hummus", "toast"]
fruit_count = 0
for food in foods:
if food not in fruit: # 음식에서 과일이 발견되지 않을때
print("Not a fruit")
continue #음식이 후무스나 토스트일때 나머지 루프는 완전히 건너뜀
fruit_count += 1 # 그렇지 않으면 과일 수에 하나 추가
print("Found a fruit!")
print("Total fruit: ", fruit_count)
>>> Found a fruit!
Found a fruit!
Not a fruit
Not a fruit
Total fruit: 2
- 이제, 위에 선박 문제에서 만든 코드를 continue 를 이용하여 다시 작성해보겠습니다.
manifest = [("bananas", 15), ("mattresses", 24), ("dog kennels", 42), ("machine", 120), ("cheeses", 5)]
weight = 0
items = []
for cargo_name, cargo_weight in manifest:
print("current weight: {}".format(weight))
if weight >= 100: # 무게가 100 이상인 경우
print(" breaking from the loop now!")
break # 반복 중단
elif weight + cargo_weight > 100: #화물을 추가하면 무게가 100을 초과하는 경우
print(" skipping {} ({})".format(cargo_name, cargo_weight))
continue # 해당 화물을 건너뜀
else: # 화물을 추가할 수 있는 경우
print(" adding {} ({})".format(cargo_name, cargo_weight))
items.append(cargo_name) # 해당 화물을 items 리스트에 추가
weight += cargo_weight # weight에 화물 무게 더하기
print("\nFinal Weight: {}".format(weight))
print("Final Items: {}".format(items))
>>> current weight: 0
adding bananas (15)
current weight: 15
adding mattresses (24)
current weight: 39
adding dog kennels (42)
current weight: 81
skipping machine (120)
current weight: 81
adding cheeses (5)
Final Weight: 86
Final Items: ['bananas', 'mattresses', 'dog kennels', 'cheeses']
3. 연습문제
(1) break문이 있는 반복문을 작성하여 문자열 news_ticker를 생성하세요.
- 이 문자열의 길이는 정확히 140자여야 합니다.
- headlines 리스트의 헤드라인을 추가하고 각 헤드라인 사이에 공백을 삽입하여 news_ticker를 만들어야 합니다.
- 필요하다면 마지막 헤드라인을 중간에서 절단하여 new_ticker의 길이가 정확히 140자가 되도록 해야 합니다.
headlines = ["Local Bear Eaten by Man",
"Legislature Announces New Laws",
"Peasant Discovers Violence Inherent in System",
"Cat Rescues Fireman Stuck in Tree",
"Brave Knight Runs Away",
"Papperbok Review: Totally Triffic"]
news_ticker = "" # 최종 결과를 저장할 빈 문자열
for headline in headlines: # 각 헤드라인에 대해 반복
news_ticker += headline + " " # 현재 헤드라인과 공백(" ") 추가
if len(news_ticker) >= 140: # 140자 이상이 되면
news_ticker = news_ticker[:140] # 문자열을 140자로 자르고
break # 반복 중단
print(news_ticker)
>>> Local Bear Eaten by Man Legislature Announces New Laws Peasant Discovers Violence Inherent in System Cat Rescues Fireman Stuck in Tree Brave
(2) 소수인지 확인하기
- 소수는 약수가 2개, 즉 1과 그 숫자뿐인 정수를 말합니다. 몇 가지 예를 들자면 2, 3, 5, 7 등이 있습니다.
- 리스트 check_prime에 제공된 숫자들이 소수인지 검사하세요.
- 만일 숫자가 소수라면 코드는 "[숫자] is a prime number."를 출력해야 합니다.
- 만일 숫자가 소수가 아니라면 "[숫자] is not a prime number"를 출력하고 1과 그 숫자 자체가 아닌 약수를 "[약수] is a factor of [숫자]"라고 출력해야 합니다
check_prime = [26, 39, 51, 53, 57, 79, 85]
for num in check_prime:
is_prime = True
for i in range(2, num):
if (num % i) == 0:
print("{} is NOT a prime number, because {} is a factor of {}".format(num, i, num))
is_prime = False
break
if is_prime:
print("{} IS a prime number".format(num))
728x90
반응형
'코딩공부 > Python' 카테고리의 다른 글
(파이썬) 리스트 컴프리헨션(List Comprehension)과 사용하는 이유 (0) | 2024.06.10 |
---|---|
(파이썬) 반복문에서 편리하게 사용가능한 zip과 enumerate 내장 함수 (0) | 2024.06.10 |
(파이썬) while 반복문 개념 및 예시, for 반복문과 차이점 (0) | 2024.06.10 |
(파이썬) for 반복문과 get 메소드로 딕셔너리(dictionary) 만들기, items로 키와 값 쌍 얻기 (1) | 2024.06.08 |
(파이썬) for 반복문, range 함수, for 반복문 이용해서 리스트 변경하기 (0) | 2024.06.08 |