반응형
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
- SQL
- 행렬
- 데이터분석
- 판다스
- CSS
- HTML
- matplotlib
- for반복문
- 영국석사
- 윈도우함수
- 코드잇 TIL
- sql연습문제
- 런던
- 머신러닝
- 오늘도코드잇
- 다항회귀
- 코딩
- 나혼자코딩
- 결정트리
- Seaborn
- 코딩공부
- 파이썬
- 경사하강법
- 로지스틱회귀
- 코드잇
- 선형회귀
- numpy
- 코드잇TIL
- 유학생
- 코딩독학
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(파이썬) while 반복문 개념 및 예시, for 반복문과 차이점 본문
728x90
반응형
저번 글에서 for 반복문에 대해 알아보았습니다. 이번 글에서는 while 반복문에 대해 알아보겠습니다.
🔻(참고) for반복문🔻
1. while 반복문
- while 반복문은 무한 반복입니다.
- 무한 반복은 반복문이 알 수 없는 횟수만큼 반복되고 일부 조건이 충족되면 종료되는 루프입니다.
- 예를 들어, 카드 목록에서 카들르 뽑아 hand 리스트로 넣은 후 hand에 있는 카드의 값이 17 이상일 때 중지하도록 하는 반복문을 만들어보겠습니다.
card_deck = [4, 11, 8, 5, 13, 2, 8, 10]
hand = []
while sum(hand) <= 17:
hand.append(card_deck.pop())
print(hand)
>>> [10, 8]
- 이 예시는 sum 함수와 리스트의 pop 메소드를 사용합니다.
- sum은 리스트에 있는 요소의 합계를 반환하는 함수입니다.
- pop은 append 메소드의 반대이며 리스트에서 마지막 요소를 제거하고 반환합니다.
- while sum(hand) <= 17: 이 줄에서 hand 리스트의 합을 계산하고 해당 합이 17보다 작거나 같은지 확인합니다.
- 이 조건이 참이면 반복문의 바디가 실행됩니다.
- 반복문의 본문이 실행될 때마다 해당 조건은 다시 평가됩니다.
- 조건을 확인하고 반복문을 실행하는 이 과정은 표현식이 거짓이 될 때까지 반복됩니다.
- hand.append(card_deck.pop()) 이 줄에서 카드 리스트에서 마지막 요소를 꺼내서(pop해서) hand 리스트에 추가합니다.
- 반복문의 들여쓰기 된 부분은 테스트 표현식에서 적어도 하나의 변수를 수정해야 합니다.
- 텍스트 표현식의 값이 변경되지 않으면 결과는 무한 루프입니다.
2. 예시
(1) 팩토리얼 계산하기
- 정수의 팩토리얼은 그 숫자와 1 사이의 모든 정수를 곱한 값입니다.
- 예를 들어, 6의 팩토리얼(“6!”으로 표시)은 6 x 5 x 4 x 3 x 2 x 1 = 720입니다. 따라서 6! = 720입니다.
- while 반복문을 이용하여 팩토리얼을 계산해보겠습니다.
number = 6
product = 1
current = 1
while current <= number:
product *= current
current += 1
print(product)
>>> 720
- for 반복문을 이용해서도 코드를 작성할 수 있습니다.
number = 6
product = 1
for num in range(2, number + 1):
product *= num
print(product)
>>> 720
(2) break number 구하기
- 반복문을 시작하기 전에, break_num을 start_num으로 설정합니다.
- 반복문을 통해 break_num을 매번 count_by만큼 증가시킵니다.
- 반복문을 멈추는 조건은 break_num이 end_num보다 커질 때입니다.
- 반복문이 끝난 후, break_num의 값은 end_num보다 큰 첫 번째 숫자가 됩니다.
start_num = 5
end_num = 100
count_by = 2
break_num = start_num
while break_num < end_num:
break_num += count_by
print(break_num)
>>> 101
- 만약, start_num 이 end_num보다 크면 오류 메세지를 출력하는 코드를 만들어보겠습니다.
start_num = 105
end_num = 100
count_by = 2
if start_num > end_num:
result = "Oops! Looks like your start value is greater than the end value. Please try again."
else:
break_num = start_num
while break_num < end_num:
break_num += count_by
result = break_num
print(result)
>>> Oops! Looks like your start value is greater than the end value. Please try again.
(3) 제곱근의 근사치
- 이 반복문은 주어진 정수 limit보다 작은 가장 큰 제곱수를 찾아 nearest_square 변수에 저장합니다.
- 제곱수란 어떤 정수를 자기 자신과 곱한 값을 의미합니다.
- 예를 들어, 36은 6*6과 같기 때문에 제곱수입니다.
- 예를 들어, limit이 40이라면, 코드가 nearest_square를 36으로 설정해야 합니다.
limit = 40
num = 0
while (num + 1) ** 2 < limit:
num += 1
nearest_square = num ** 2
print(nearest_square)
>>> 36
3. for 반복문과 while 반복문 차이
(1) for 반복문
- for 반복문은 반복 횟수를 알고 있거나 유한한 경우에 유용합니다.
- 즉, 반복문의 바디가 미리 정의된 횟수만큼 실행됨을 의미합니다.
- iterable 컬렉션이 있는 경우(리스트, 문자열, 세트, 튜플, 딕셔너리)
- 리스트에 대한 for 반복문은 리스트의 각 요소에 대해 바디를 한 번 실행합니다.
- 예시) for name in names:
- range() 함수를 사용하여 유한한 횟수로 반복하려는 경우
- 예시) for i in range(5):
(2) whlie 반복문
- while 반복문은 조건이 충족될 때까지 반복이 계속되어야 하는 경우에 유용합니다.
- 비교 연산자를 사용하려는 경우
- 예시) while count <= 100:
- 특정한 사용자 입력을 받아 반복하려는 경우
- 예시) while user_input == 'y':
(3) 예시
- 아래의 예시에서 어떤 유형의 반복문을 사용해야하는지 알아보겠습니다.
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
- 이 리스트에서 앞에서부터 5개까지의 홀수를 더하는 코드를 작성할때는, while 반복문을 사용해야합니다.
- 그 이유는 for 반복문에 필요한 break문이 필요하지 않습니다. break문이 없다면 for 반복문은 리스트 전체를 반복하게 됩니다.
- 우리는 전체 리스트를 반복하기 원하지 않고, 조건을 충족하는 리스트의 필요한 개수의 요소만 반복하려고 합니다.
- 반복문을 나가는 조건을 명시적으로 통제하기 때문에 더 이해하기 쉽습니다.
- 코드는 아래와 같습니다.
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
count_odd = 0
list_sum = 0
i = 0
len_num_list = len(num_list)
while (count_odd < 5) and (i < len_num_list):
if num_list[i] % 2 != 0:
list_sum += num_list[i]
count_odd += 1
i += 1
print("The numbers of odd numbers added are: {}".format(count_odd))
print("The sum of the odd numbers added is: {}".format(list_sum))
>>> The numbers of odd numbers added are: 5
The sum of the odd numbers added is: 85
- 만약 질문이 리스트에 있는 모든 홀수 또는 짝수를 식별하는 것이라면 for 반복문이 더 합리적입니다.
- 하지만 위의 질문에서는 앞의 다섯 홀수의 합계만 있으면(조건) 리스트 반복을 중지할 수 있고 나머지 요소를 반복할 필요가 없습니다.
728x90
반응형
'코딩공부 > Python' 카테고리의 다른 글
(파이썬) 반복문에서 편리하게 사용가능한 zip과 enumerate 내장 함수 (0) | 2024.06.10 |
---|---|
(파이썬) for 반복문과 while 반복문에서 break 와 continue 사용하기 (1) | 2024.06.10 |
(파이썬) for 반복문과 get 메소드로 딕셔너리(dictionary) 만들기, items로 키와 값 쌍 얻기 (1) | 2024.06.08 |
(파이썬) for 반복문, range 함수, for 반복문 이용해서 리스트 변경하기 (0) | 2024.06.08 |
(파이썬) 조건문 if, elif, else 문 (0) | 2024.06.07 |