제어문
분기(if)
- if문을 이용하면 특정 조건이 충족될 시 특정 행동을 하도록 만들 수 있다.
- if, elif, else의 뒤에 조건을 작성하고 :을 붙인 뒤 줄을 바꿔 해당 조건이 충족될 시 수행할 행동을 입력한다.
menu = input("무엇을 주문하시겠습니까? ")
if menu == "짜장면" :
print(f"{menu} 나왔습니다.")
elif menu == "짬뽕" :
print(f"{menu} 나왔습니다.")
else :
print(f"{menu}는 저희 가게에 없는 메뉴 입니다.")
반복(for)
- 특정 행동을 반복해야 할 경우 for문을 이용하면 일일히 입력할 필요 없이 자동으로 반복해서 수행할 수 있다.
- 반복문을 선언하고 반복할 범위와 수행할 행동을 지정하면 그 범위 내에서 지정한 행동을 반복해서 수행하게 된다.
num = 1
result = 0
for plus in range(10) :
result += num
num += 1
print(result)
food = ["짜장면", "짬뽕", "탕수육"]
for cook in food :
print(f"{cook}이 준비되었습니다.")
for cook in ["짜장면", "짬뽕", "탕수육"] :
print(f"{cook}이 준비되었습니다.")
반복(while)
- while도 반복문이지만 for와는 약간의 차이가 있다.
- for는 반복을 수행할 범위를 별도로 지정하게 되지만,
- while은 조건을 정해두고 해당 조건이 충족된다면 계속해서 반복을 수행하게 된다.
- 조건에 True를 입력할 경우 무한루프가 된다.
num = 1
result = 0
while num <= 10 :
result += num
num += 1
print(result)
customer = "김철수"
person = "__"
while person != customer :
print(f"{customer}님, 음식이 준비 되었습니다.")
person = input("성함이 어떻게 되세요? ")
continue & break
- continue와 break는 반복문에서 사용할 수 있다.
- continue는 아래에 남아있는 코드를 실행하지 않고 바로 다음 반복으로 건너뛰게 한다.
- break는 아래에 남아있는 코드와 다음 반복을 실행하지 않고 반복이 종료된다.
짜장면 = 5
짬뽕 = 5
while True :
if 짜장면 == 0 and 짬뽕 == 0 :
print("재료가 모두 소진되었습니다.")
break
menu = input("무엇을 주문하시겠습니까? ")
if menu == "짜장면" :
if 짜장면 > 0 :
짜장면 -= 1
else :
print("짜장면은 모두 소진되었습니다.")
print(f"짜장면 {짜장면} 그릇, 짬뽕 {짬뽕} 그릇 남았습니다.")
continue
elif menu == "짬뽕" :
if 짬뽕 > 0 :
짬뽕 -= 1
else :
print("짬뽕은 모두 소진되었습니다.")
print(f"짜장면 {짜장면} 그릇, 짬뽕 {짬뽕} 그릇 남았습니다.")
continue
else :
print(f"{menu}는 저희 가게에 없는 메뉴 입니다.")
continue
print(f"{menu} 나왔습니다.")
print(f"짜장면 {짜장면} 그릇, 짬뽕 {짬뽕} 그릇 남았습니다.")
한 줄 for
- for문은 간단하게 한 줄만으로도 다양한 곳에 활용이 가능하다.
price = [6000, 5000, 5000, 12000]
price = [i + 500 for i in price]
print(price)
menu = ["짜 장 면", "짬 뽕 ", " 탕 수 육"]
menu = [i.replace(" ", "") for i in menu]
print(menu)
연습 문제
- 한 중국집에서 배달 예상 시간 15분 이내의 고객들에게 배달팁 무료 이벤트를 진행한다.
- 편의상 배달 예상 시간은 5 ~ 50분 이내에서 랜덤으로 정해지며, 주문 접수는 50회로 제한한다.
- 매 주문마다 접수 순서, 예상 배달 시간, 이벤트 대상 여부를 출력하고 마지막에 무료 혜택을 받은 총 고객 수를 출력하기.
from random import *
cnt = 0
for delivery in range(1, 51) :
time = randint(5, 50)
if time <= 15 :
print(f"{delivery}번 주문 - 배달 소요 시간 : {time}분, 이벤트 대상 [o]")
cnt += 1
else :
print(f"{delivery}번 주문 - 배달 소요 시간 : {time}분, 이벤트 대상 [ ]")
print(f"배달팁 면제 고객 수 : {cnt}명")