Note/Python

04.for/while 반복문 (3)

HanJW96 2023. 2. 10. 15:39

반복문을 제어하는 break, continue

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

break statement

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

continue statement

RE : 실제 자판기 기계는 돈을 한번 넣고 종료되지 않는다. 자판기 기계(프로그램)이 종료되는 경우는 커피가 다 떨어졌을 때이다.

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

# 자판기의 커피 수량
coffee = 5

# 일단 작동!
while True:

     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("커피가 모두 소진되었으니, 관리자에게 문의해주세요.")
 
 
이때, break는 맨 위에 작성. 만약 커피가 없다면 더이상 반복할 필요가 없기 때문.
결과창

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원을 넣었을 때 결과

->300원이 될때까지 계속해서 추가금액

-> 300원이 되자 커피를 주고 남은금액 반환

->커피가 모두 소진되면 메세지 출력

Q) nested loop를 연습해보자

반복문 안에 반복문 넣기

for dan in range(2,10):
  print("-" * 10)
  for number in range(1,10):
    print("%d x %d = %d" % (dan, number, dan*number))

2~9단 까지 반복

구구단 사이사이에 -*10개 출력  => ----------

단은 2~9 number은 1~9

그러면 2x1 ~~~~2x9

3x1 ~~~~3x9 이런식으로 출력됨