Iteration(while, For)
1. while statement
- while문은 조건을 만족할 때 까지 반복한다.
- while (조건) :
<statement1>
<statement2>
<statement3>
- 조건이 만족하는 동안(while) statement1, 2, 3을 반복한다..
구구단을 통해 연습해봅시다!
# 2단을 while문으로 구현해봅시다.
number = 1
while number < 10:
print("2 X %d = %d" % (number, 2 * number))
number = number + 1
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
실제 자판기 기계는 돈을 한번 넣고 종료되지 않는다. 자판기 기계(프로그램)이 종료되는 경우는
커피가 다 떨어졌을 때이다.
# 자판기의 커피 수량
coffee = 5
# 커피가 남아있는 동안 작동!
while coffee > 0:
# 실제로는 자판기를 통해서 넣은 금액.
money = int(input("금액을 입력해주세요 : "))
if money == 300:
# 실제로 이 파트는 자판기에서 커피를 뽑는 명령으로 대체된다.
print("Coffee")
# 이제 커피를 하나씩 줄인다.
coffee = coffee - 1
elif money < 300:
# 실제로 이 파트는 돈을 반환한다.
print("%d원을 돌려줍니다." % money)
else: # or elif money > 300:
# 커피를 뽑아주고
print("Coffee")
# 이제 커피를 하나씩 줄인다.
coffee = coffee - 1
# 거스름돈을 돌려준다.
print("%d원을 돌려줍니다." % (money - 300))
# 커피가 다 떨어진 경우 알려야한다.
print("커피가 모두 소진되었으니, 관리자에게 문의해주세요.")
금액을 입력해주세요 : 500
Coffee
200원을 돌려줍니다.
금액을 입력해주세요 : 300
Coffee
금액을 입력해주세요 : 150
150원을 돌려줍니다.
금액을 입력해주세요 : 1000
Coffee
700원을 돌려줍니다.
금액을 입력해주세요 : 700
Coffee
400원을 돌려줍니다.
금액을 입력해주세요 : 400
Coffee
100원을 돌려줍니다.
커피가 모두 소진되었으니, 관리자에게 문의해주세요.
2. for statement
- while문은 조건이 만족하는 동안 반복을 수행했지만, for문은 지정 횟수동안 반복을 수행한다.
여기서 지정된 횟수라는 것은 반복 대상의 크기가 된다.
- 보통 iterable object(반복 가능한 객체)를 대상으로 수행되며, 연속형 데이터 타입 변수들이 여기에 해당된다
List, Tuple, string, ...
- for 변수 in 리스트(튜플, 문자열, iterator):
<statement1>
<statement2>
<statement3>
- 리스트(나 반복가능한 변수들)의 모든 원소를 (자동으로 끝까지) 반복한다
# 원소가 1, 2, 3인 리스트의 원소를 하나하나 출력하는 반복문을 만든다.
L = [1, 2, 3]
for i in L:
print(i)
1
2
3
6개의 커피 음료가 담긴 리스트가 있다. 카페에 있는 모든 음료를 출력해보자!
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
for coffee in coffees:
print(coffee)
아메리카노
카페라떼
카페모카
바닐라라떼
핸드드립
콜드브루
for문의 단짝 range() 함수
- for문은 특정 횟수동안 반복을 하기 때문에, 횟수를 자동으로 만들어주는 기능이 있으면 좋다.
- 파이썬에서 기본적으로 제공하는 range 함수는 특정 숫자 범위내의 값들을 자동으로 생성해주는 함수이다.
e.g. range(1, 5)는 1, 2, 3, 4를 차례대로 생성해준다. (5는 범위에서 제외된다. 즉, 마지막 숫자는 제외된다. 1 <= x < 5)
# range 함수를 이용해 1부터 4까지 출력하는 프로그램을 작성해보자. for문을 이용해서!
for i in range (1, 5):
print(i)
1
2
3
4
6개의 커피 음료와 음료의 가격이 담긴 리스트가 있다. 가지고 있는 돈이 5,000원일 때 먹을 수 있는 모든 음료를 찾아보자!
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]
for i in range(0,6):
if prices[i] <= 5000:
print(coffees[i])
아메리카노
카페라떼
카페모카
콜드브루
RE : 6개의 커피 음료와 음료의 가격이 담긴 리스트가 있다. 오늘은 할인 행사를 하여 모든 음료가 500원 할인 되었다! 가지고 있는 돈이 5,000원일 때 먹을 수 있는 모든 음료를 찾아보자!
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]
# 1. index를 사용하는 방법
for i in range(len(coffees)):
if prices[i] -500 <= 5000:
print(coffees[i])
print()
# 2. enuerate를 사용하는 방법
for idx, price in enumerate(prices):
if price - 500 <= 5000:
print(coffees[idx])
print()
# 3. zip을 사용하는 방법
for coffee, price in zip(coffees, prices):
if price - 500 <= 5000:
print(coffee)
아메리카노
카페라떼
카페모카
바닐라라떼
콜드브루
아메리카노
카페라떼
카페모카
바닐라라떼
콜드브루
아메리카노
카페라떼
카페모카
바닐라라떼
콜드브루
enumerate 함수
- 반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있습니다. 이때 사용합니다.
- 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환합니다.
>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
... print(p)
...
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
zip 함수
- 여러 개의 iterable자료형이 개수가 동일할 때 사용한다.
- iterable 자료형의 각각의 요소를 나눈 후 순서대로 묶어서 요소 개수만큼 새로운 iterable 자료형을 생성한다.
- 여기에서 말하는 interable자료형은 리스트, 튜플 같이 반복 가능한 자료형을 의미한다
# iterable자료형
>>> num = [1, 2, 3]
>>> fruit = ['apple', 'banana', 'orange']
>>> color = ['red', 'yellow', 'orange']
# 위와 같은 요소 개수가 같은 3개의 리스트가 있는 경우, 왼쪽부터 슬라이스 하듯 각 리스트에서
# 인덱스 위치 순서가 동일한 요소끼리 나눈 후 묶어주는 것이다.
# zip함수로 묶어줌
>>> zip_list = zip(num, fruit, color)
>>> print(zip_list, type(zip_list))
<zip object at 0x0000020180766048> <class 'zip'> #zip 타입으로 출력
>>> print(list(zip_list)) # list 타입으로 변환
[(1, 'apple', 'red'), (2, 'banana', 'yellow'), (3, 'orange', 'orange')]
# 3개의 리스트
num = [1, 2, 3]
fruit = ['apple', 'banana', 'orange']
color = ['red', 'yellow', 'orange']
# zip함수를 이용한 출력값
[(1, 'apple', 'red'), (2, 'banana', 'yellow'), (3, 'orange', 'orange')]
반복문을 제어하는 break, continue
- 만약 반복문을 수행하다가 더 이상 반복이 필요없는 경우에는 어떻게 해야할까?
break statement
- 만약 반복문을 수행하다가 특정 조건에만 건너뛰고 싶은 경우에는 어떻게 해야할까?
continue statement
RE : 실제 자판기 기계는 돈을 한번 넣고 종료되지 않는다. 자판기 기계(프로그램)이 종료되는 경우는 커피가 다 떨어졌을 때이다.
Q. 커피가 다 떨어질 때 까지 자판기 프로그램을 반복하면서 실행한 뒤, 돈을 입력받아서 커피를 주는 프로그램을 작성해보자.
# 자판기의 커피 수량
coffee = 5
# 일단 작동!
while True: # 영원히 반복 (infinite Loop)
if coffee == 0:
break
# 실제로는 자판기를 통해서 넣은 금액.
money = int(input("금액을 입력하세요."))
if money == 300:
# 실제로 이 파트는 자판기에서 커피를 뽑는 명령으로 대체된다.
print("Coffee")
# 이제 커피를 하나씩 줄인다.
coffee = coffee - 1
elif money < 300:
# 실제로 이 파트는 돈을 반환한다.
print("%d원을 반환합니다." % money)
else: # or elif money > 300:
print("Coffee")
# 커피를 뽑아주고
coffee = coffee - 1
# 이제 커피를 하나씩 줄인다.
print("%d원을 반환합니다." % (money-300))
# 거스름돈을 돌려준다.
# 커피가 다 떨어진 경우 알려야한다.
print("커피가 모두 소진되었으니, 관리자에게 문의해주세요.")
# 자판기의 커피 수량
coffee = 5
# 일단 작동!
while True: # 영원히 반복 (infinite Loop)
if coffee == 0:
break
# 실제로는 자판기를 통해서 넣은 금액.
money = int(input("금액을 입력하세요."))
if money == 300:
# 실제로 이 파트는 자판기에서 커피를 뽑는 명령으로 대체된다.
print("Coffee")
# 이제 커피를 하나씩 줄인다.
coffee = coffee - 1
elif money < 300:
# 실제로 이 파트는 돈을 반환한다.
print("%d원을 반환합니다." % money)
else: # or elif money > 300:
print("Coffee")
# 커피를 뽑아주고
coffee = coffee - 1
# 이제 커피를 하나씩 줄인다.
print("%d원을 반환합니다." % (money-300))
# 거스름돈을 돌려준다.
# 커피가 다 떨어진 경우 알려야한다.
print("커피가 모두 소진되었으니, 관리자에게 문의해주세요.")
RE : 실제 자판기 기계는 돈을 한번 넣고 종료되지 않는다. 자판기 기계(프로그램)이 종료되는 경우는 커피가 다 떨어졌을 때이다.
Q. 커피가 다 떨어질 때 까지 자판기 프로그램을 반복하면서 실행한 뒤, 돈을 입력받아서 커피를 주는 프로그램을 작성해보자.
이번에는 돈이 모자랄 때는, 추가로 돈을 입력받아 300원을 넘는 경우에 커피를 뽑아주는 프로그램을 작성해보자.
# 자판기의 커피 수량
coffee = 5
# 거스름돈 보관
change = 0
# 일단 작동!
while coffee > 0:
# 실제로는 자판기를 통해서 넣은 금액.
money = int(input("금액을 입력해주세요 : "))
# 잔고와 합쳐서 체크
money = money + change
if money == 300:
# 실제로 이 파트는 자판기에서 커피를 뽑는 명령으로 대체된다.
print("Coffee")
# 이제 커피를 하나씩 줄인다.
coffee = coffee - 1
elif money < 300:
# 돈을 더 받자.
print("돈이 모자랍니다, 추가로 금액을 입력해주세요.")
change = money # 잔고를 저장
continue # 정산을 하지 않고 위로다시 올라감!
else: # or elif money > 300:
print("Coffee")
# 커피를 뽑아주고
coffee = coffee - 1
# 이제 커피를 하나씩 줄인다.
print("%d원을 반환합니다." % (money-300))
# 거스름돈을 돌려준다.
# 정산
change = 0
# 커피가 다 떨어진 경우 알려야한다.
print("커피가 모두 소진되었으니, 관리자에게 문의해주세요.")
금액을 입력해주세요 : 150
돈이 모자랍니다, 추가로 금액을 입력해주세요.
금액을 입력해주세요 : 200
Coffee
50원을 반환합니다.
금액을 입력해주세요 : 100
돈이 모자랍니다, 추가로 금액을 입력해주세요.
금액을 입력해주세요 : 500
Coffee
300원을 반환합니다.
금액을 입력해주세요 : 200
돈이 모자랍니다, 추가로 금액을 입력해주세요.
금액을 입력해주세요 : 300
Coffee
200원을 반환합니다.
금액을 입력해주세요 : 1500
Coffee
1200원을 반환합니다.
금액을 입력해주세요 : 300
Coffee
커피가 모두 소진되었으니, 관리자에게 문의해주세요.
전설의 구구단 구현. nested loop를 연습해보자!
# nested loop를 이용하여 구구단을 구현합시다.
for dan in range(2 , 10):
for number in range(1, 10):
print("%d x %d = %d" % (dan, number, number*dan))
print()
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
6 x 1 = 6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
'Python > Python Programming' 카테고리의 다른 글
Part03 Chapter.01 파이썬 프로그래밍-10. 함수 (실습) (0) | 2022.07.11 |
---|---|
Part03 Chapter.01 파이썬 프로그래밍-09. 함수(이론) (0) | 2022.07.11 |
Part03 Chapter.01 파이썬 프로그래밍07. for, while(이론) (0) | 2022.07.11 |
Part03 Chapter.01 파이썬 프로그래밍-06. IF (실습) (0) | 2022.07.11 |
Part03 Chapter.01 파이썬 프로그래밍-05.IF(이론) (0) | 2022.07.11 |