Python_3. 제어문

소고기는레어·2021년 5월 31일
0

Python

목록 보기
3/10

제어문

분기(if)

  • if문을 이용하면 특정 조건이 충족될 시 특정 행동을 하도록 만들 수 있다.
  • if, elif, else의 뒤에 조건을 작성하고 :을 붙인 뒤 줄을 바꿔 해당 조건이 충족될 시 수행할 행동을 입력한다.
# 중국집 주문 받기 
# input을 통해 사용할 변수를 사용자에게 직접 입력 받는다.   
menu = input("무엇을 주문하시겠습니까? ")

# menu가 짜장면일 경우 '짜장면 나왔습니다.' 출력
if menu == "짜장면" : 
    print(f"{menu} 나왔습니다.")

# menu가 짬뽕일 경우 '짬뽕 나왔습니다.' 출력
elif menu == "짬뽕" :
    print(f"{menu} 나왔습니다.")
    
# 그 외의 경우 '~는 저희 가게에 없는 메뉴 입니다.' 출력
else :
    print(f"{menu}는 저희 가게에 없는 메뉴 입니다.")

반복(for)

  • 특정 행동을 반복해야 할 경우 for문을 이용하면 일일히 입력할 필요 없이 자동으로 반복해서 수행할 수 있다.
  • 반복문을 선언하고 반복할 범위와 수행할 행동을 지정하면 그 범위 내에서 지정한 행동을 반복해서 수행하게 된다.
# 1부터 10까지 합 구하기
num = 1      # 더할 숫자를 1씩 늘리기 위한 변수 선언 (1~10)
result = 0      # 결과를 저장할 변수 선언
for plus in range(10) :      # 반복문 선언, 범위 지정(10)
    result += num      # 결과에 num을 더한다.
    num += 1      # num에 1을 더한다.
print(result)      # 모든 반복이 완료되면 결과를 출력한다.


# 음식 나열하기
food = ["짜장면", "짬뽕", "탕수육"]      # 음식 리스트 선언
for cook in food :      # 반복문 선언, 범위 지정(food 리스트)
    print(f"{cook}이 준비되었습니다.")      # 리스트 내용 순서대로 출력
    
# 혹은 음식 리스트 선언을 생략하고 반복문 안에 포함시킬 수도 있다.
for cook in ["짜장면", "짬뽕", "탕수육"] :
    print(f"{cook}이 준비되었습니다.")

반복(while)

  • while도 반복문이지만 for와는 약간의 차이가 있다.
    • for는 반복을 수행할 범위를 별도로 지정하게 되지만,
    • while은 조건을 정해두고 해당 조건이 충족된다면 계속해서 반복을 수행하게 된다.
      • 조건에 True를 입력할 경우 무한루프가 된다.
# 1부터 10까지 합 구하기 (while 사용)
num = 1
result = 0
while num <= 10 : # 반복문 선언, num이 10 이하일 때만 반복
    result += num
    num += 1 
print(result)

# 주문자가 일치할 경우 음식 주기
customer = "김철수"
person = "__"
while person != customer :
    print(f"{customer}님, 음식이 준비 되었습니다.")
    person = input("성함이 어떻게 되세요? ")

continue & break

  • 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문은 간단하게 한 줄만으로도 다양한 곳에 활용이 가능하다.
# 물가가 올라서 메뉴의 가격들을 500원 인상하기로 했다.
price = [6000, 5000, 5000, 12000]
price = [i + 500 for i in price]
print(price)
# => [6500, 5500, 5500, 12500]

# 오류가 발생해 메뉴 이름에 생긴 이상한 공백들을 삭제해야한다.
menu = ["짜 장 면", "짬 뽕 ", " 탕   수 육"]
menu = [i.replace(" ", "") for i in menu]
print(menu)
# => ['짜장면', '짬뽕', '탕수육']

연습 문제

  • 한 중국집에서 배달 예상 시간 15분 이내의 고객들에게 배달팁 무료 이벤트를 진행한다.
  • 편의상 배달 예상 시간은 5 ~ 50분 이내에서 랜덤으로 정해지며, 주문 접수는 50회로 제한한다.
  • 매 주문마다 접수 순서, 예상 배달 시간, 이벤트 대상 여부를 출력하고 마지막에 무료 혜택을 받은 총 고객 수를 출력하기.
# 랜덤 모듈 불러오기
from random import *

# 무료 혜택을 받은 고객수를 저장할 변수 선언
cnt = 0

# 1~50회 반복문 선언
for delivery in range(1, 51) :
    time = randint(5, 50)         # 배달 소요 시간 랜덤으로 결정
    if time <= 15 :          # 소요 시간 15분 이내일 경우 cnt에 +1하고 문장 출력
        print(f"{delivery}번 주문 - 배달 소요 시간 : {time}분, 이벤트 대상 [o]")
        cnt += 1
    else :          # 소요 시간 15분 이내일 경우 문장 출력
        print(f"{delivery}번 주문 - 배달 소요 시간 : {time}분, 이벤트 대상 [ ]")
print(f"배달팁 면제 고객 수 : {cnt}명")         # 혜택 받은 총 고객 수 출력


profile
https://www.rarebeef.co.kr/

0개의 댓글