Sesac 25일차

SungMin·2022년 11월 8일
0

Sesac-Python

목록 보기
2/11

조건문

  • 커피 자판기 만들기
money = 600
if money == 300:
    print("Coffee")
elif money > 300:
    print("Coffee")
    print("%d원을 돌려줍니다." % (money - 300))
else:
    print("%d원을 돌려줍니다." % money)
  • nested(중첩) 구조로 만들기
money = int(input("금액을 넣어주세요. : "))
if money == 300:
    print("Coffee")
else:
  if money > 300:
      print("Coffee")
      print("%d원을 돌려줍니다." % (money - 300))
  else:
      print("%d원을 돌려줍니다." % money)
  • elif와 nested는 상황에 따라 쓰는것이 좋다. 지나치게 elif가 중첩되는 것은 좋지 않음.

반복문

while문

  • 구구단 출력하기
dan = 2
while dan < 10:
  number = 1
  while number < 10:
    print ("%d x %d = %d" % (dan, number, dan*number))
    number = number +1
  dan = dan +1

  • 커피가 떨어질 때 까지 주는 자판기
coffee = 5
while coffee > 0:
  money = int(input("금액을 입력해주세요 : "))
  if money == 300:
    print("Coffee")
    coffee = coffee - 1
  elif money < 300:
    print("%d원을 돌려줍니다." % money)
  else:
    print("Coffee")
    coffee = coffee - 1
    print("%d원을 돌려줍니다." % (money - 300))
print("커피가 모두 소진되었습니다. 관리자에게 문의해주세요.")
  • 출력물
    금액을 입력해주세요 : 300
    Coffee
    금액을 입력해주세요 : 300
    Coffee
    금액을 입력해주세요 : 400
    Coffee
    100원을 돌려줍니다.
    금액을 입력해주세요 : 500
    Coffee
    200원을 돌려줍니다.
    금액을 입력해주세요 : 600
    Coffee
    300원을 돌려줍니다.
    커피가 모두 소진되었습니다. 관리자에게 문의해주세요.

for문

  • 보통 지역변수는 4개까지만 사용하는 게 좋다. 여기서는 i를 주로 사용
  • range함수를 단짝처럼 같이 사용하게 된다.
  • range(시작값, 종료값, 증가량) 형식으로 사용
for i in range(1, 11):
  print(i)
  • 6가지 음료중에 가진 돈이 5천원일 때 먹을 수 있는 종류를 찾아보자.
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]

for i in range(len(coffees)):
  if prices[i] <= 5000:
    print(coffees[i])
  • 결과물
    아메리카노
    카페라떼
    카페모카
    콜드브루

  • 위 함수에서 range함수를 사용하여서 i가 0부터 시작하는 것이 아닌지에 대해 의문이 생길 수 있지만, len함수를 사용하였기에 1부터 시작하게 된다.

  • 실행하면 i값이 더해지는 것이 아니라, range함수가 증가하게 된다.


break, continue

  • 반복문을 제어하는 용도

  • 돈이 모자랄 경우 추가 안내를 하는 커피 자판기

coffee = 5

extra_money = 0
while coffee > 0:
  money = int(input("금액을 입력하세요."))
  money = money + extra_money
  if money == 300:
    print("Coffee")
    coffee = coffee - 1
  elif money < 300:
    print("돈이 모자랍니다. 추가로 금액을 입력해주세요.")
    extra_money = money
    continue
  else: 
    print("Coffee")
    coffee = coffee - 1
    print("%d원을 반환합니다." % (money-300))
  extra_money = 0
print("커피가 모두 소진되었습니다. 관리자에게 문의해주세요.")
  • 출력 결과물
    금액을 입력하세요.500
    Coffee
    200원을 반환합니다.
    금액을 입력하세요.600
    Coffee
    300원을 반환합니다.
    금액을 입력하세요.400
    Coffee
    100원을 반환합니다.
    금액을 입력하세요.300
    Coffee
    금액을 입력하세요.200
    돈이 모자랍니다. 추가로 금액을 입력해주세요.
    금액을 입력하세요.400
    Coffee
    300원을 반환합니다.
    커피가 모두 소진되었습니다. 관리자에게 문의해주세요.

  • 역방향 별피라미드 출력
i = 10
star = '*'

for j in range(i , 0, -1):
    print(j * star)
  • 출력 결과물

  • 한 번에 여러개의 변수를 받는 함수를 만들 수도 있다.
money = int(input("돈을 넣어주세요. : "))
coffee, cocoa, yulmu = [int(x) for x in input("뽑고 싶은 커피, 코코아, 율무차의 수량을 입력해주세요. 쉼표를 기준으로 순서대로 입력하시면 됩니다. : ").split(',')]
print(coffee)
print(f"거스름돈은 {money - 300*coffee - 200*cocoa - 300*yulmu}원 입니다. 남은 커피는 {5-coffee}잔, 코코아는 {5-cocoa}잔, 율무차는 {5-yulmu}잔 입니다.")
  • 출력 결과물
    돈을 넣어주세요. : 3000
    뽑고 싶은 커피, 코코아, 율무차의 수량을 입력해주세요. 쉼표를 기준으로 순서대로 입력하시면 됩니다. : 3, 2, 4
    3
    거스름돈은 500원 입니다. 남은 커피는 2잔, 코코아는 3잔, 율무차는 1잔 입니다.

  • 100이하의 자연수 중에서 5의 배수를 모두 찾아서 출력하세요.
print([x for x in range(1, 101) if x % 5 == 0])
  • 출력 결과물
    [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]

함수

  • def 형식으로 사용함.
  • 파이썬은 자바와 달리 함수 지정을 초반에 해줘야 함. 밑에서 사용할 경우에도 위에서 지정해 줌.
def add(a, b):
  c = a + b
  return c

add (10, 11)

  1. parameter와 return이 모두 존재하는 경우
  2. parameter는 없고 return은 있는 경우
  3. parameter는 있고 return은 없는 경우
  4. parameter와 return 모두 없는 경우
  • 함수의 파라미터 변수 이름과 함수를 호출하는 argument의 이름이 같은 경우
def change_name(a):
  # local variable : 지역 변수
  name = "lee" # local
  print("in function :", a)
  return name

name = "kim" #global
change_name(name)
  • 출력 결과물
    in function : kim
    'lee'

  • 지역 변수와 전역 변수가 다르기 때문에 사용할 때 유의하여야 한다.

def full_name(a, b):
  # local variable : 지역 변수
  c = a + b # local
  print("My name is :", c)
  # return name

last = "hong"
first = "gildong"

full_name(last, first)
  • 출력 결과물
    My name is : honggildong
profile
초보 개발자의 학습 저장용 블로그

0개의 댓글