SiLaure's Data

[Python] 11-1,2. Python 기초 문법 - Iteration Statement(for) 본문

카테고리 없음

[Python] 11-1,2. Python 기초 문법 - Iteration Statement(for)

data_soin 2021. 7. 21. 22:38


- while문은 조건이 만족하는 동안 반복을 수행했지만, for문은 지정 횟수동안 반복을 수행한다. 
· 여기서 지정된 횟수라는 것은 반복 대상의 크기가 된다. 

- 보통 iteratable object(반복 가능한 객체)를 대상으로 수행되며, 연속형 데이터 타입 변수들이 여기에 해당된다. 
· List, Tuple, string, ... 


- for 변수 in 리스트(튜플, 문자열, iterator): 
      <statement1>
      <statement2>
      <statement3>
           
- 리스트(나 반복가능한 변수들)의 모든 원소를 (자동으로 끝까지) 반복한다. 

# 원소가 1, 2, 3인 리스트의 원소를 하나하나 출력하는 반복문을 만든다.

# 반복 가능한 객체 == iteratorable object 
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문을 이용해서!

range(3)
# o, 1, 2 

range(1, 5)
# 1, 2, 3, 4 

range(2, 10, 2)
# 2부터 10까지 2씩 뛰어넘음 --2, 4, 6, 8  -- 마지막 숫자는 제외

for i in range(2, 10, 2) : 
    print(i)
2
4
6
8



# 6개의 커피 음료와 음료의 가격이 담긴 리스트가 있다.

  가지고 있는 돈이 5,000원일 때 먹을 수 있는 모든 음료를 찾아보자!

coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루'] 
prices = [4100, 4600, 4600, 5100, 6000, 5000]


# 생각해보기 
# 리스트를 합쳐서 value 값이 5000원 이하인 음료의 key를 찾는다? 

# 풀이

for i in range(len(coffees)) :  
# for i in range(6) == 0, 1, 2, 3, 4, 5
	-- coffees의 index를 하나씩 가져오겠다.(prices도 동일) 
    
    if prices[i] <= 5000 : 
        print(coffees[i])
아메리카노
카페라떼
카페모카
콜드브루


# R오늘은 할인 행사를 하여 모든 음료가 500원 할인 되었다! 5,000원으로 먹을 수 있는 모든 음료를 찾아보자!

coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루'] 
prices = [4100, 4600, 4600, 5100, 6000, 5000] 

for i in range(len(prices)) : 
    if prices[i] - 500 <= 5000 : 
            print(coffees[i])
아메리카노
카페라떼
카페모카
바닐라라떼
콜드브루



# for문과 함께 쓰면 좋은 함수

1. enumerate

for i, price in enumerate(prices) :  
    if price <= 5000 : 
        print(coffees[i])

 

2 . zip

for coffee, price in zip(coffees, prices) : 
    if price <= 5000: 
        print(coffee)
1.
아메리카노
카페라떼
카페모카
콜드브루

2.
아메리카노
카페라떼
카페모카
콜드브루



# 반복문을 제어하는 break, continue 

- 만약 반복문을 수행하다가 더 이상 반복이 필요없는 경우에는 어떻게 해야할까? 
   : **break statement** 

- 만약 반복문을 수행하다가 특정 조건에만 건너뛰고 싶은 경우에는 어떻게 해야할까? 
   : **continue statement** 


Q. 커피가 다 떨어질 때 까지 자판기 프로그램을 반복하면서 실행한 뒤, 돈을 입력받아서 커피를 주는 프로그램을 작성해보자. 

# 자판기의 커피 수량

coffee = 5


# 일단 작동!

while True: 

# 실제로는 자판기를 통해서 넣은 금액. 
    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("커피가 모두 소진되었으니, 관리자에게 문의해주세요.")
금액을 입력하세요.1000
Coffee
700원을 반환합니다.
금액을 입력하세요.300
Coffee
금액을 입력하세요.200
200원을 반환합니다.
금액을 입력하세요.600
Coffee
300원을 반환합니다.
금액을 입력하세요.700
Coffee
400원을 반환합니다.
금액을 입력하세요.500
Coffee
200원을 반환합니다.
커피가 모두 소진되었으니, 관리자에게 문의해주세요.

 

Comments