소연의_개발일지
article thumbnail

출처: 유데미 안젤라 파이썬 100일 챌린지

https://www.udemy.com/course/best-100-days-python/learn/lecture/29149144#content


문제: 아래 코드에서 print 대신 return을 활용해서 월별 일수를 반환하라.

(참고: 윤년은 2월이 29일임)

def is_leap(year):
  if year % 4 == 0:
    if year % 100 == 0:
      if year % 400 == 0:
        print("Leap year.")
      else:
        print("Not leap year.")
    else:
      print("Leap year.")
  else:
    print("Not leap year.")

def days_in_month():
  month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  
  
  
#🚨 Do NOT change any of the code below 
year = int(input("Enter a year: "))
month = int(input("Enter a month: "))
days = days_in_month(year, month)
print(days)

내가 푼 코드

def is_leap(year):
  if year % 4 == 0:
    if year % 100 == 0:
      if year % 400 == 0:
        return True
      else:
        return False
    else:
      return True
  else:
    return False

def days_in_month(year, month):
  month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  
  if is_leap(year) == True:
    if month == 2:
        return 29
    else:
        return f"{month_days[month+1]}"
  else:
    return f"{month_days[month-1]}"
  
#🚨 Do NOT change any of the code below 
year = int(input("Enter a year: "))
month = int(input("Enter a month: "))
days = days_in_month(year, month)
print(days)

먼저 윤년을 True, 윤년이 아니면 False로 반환한다.

days_and_month에 year, month 값 넣어준다.

 

사용자가 입력한 값이 True(즉 윤년)이라면 

-> 2월인지 확인 -> 맞으면 29반환

-> 2월 아니면 -> month_days에서 -1뺀(list는 0부터 시작하니까) 순서 반환

 

사용자가 입력한 값이 False(윤년이 아님)라면

month_days에서 -1뺀(list는 0부터 시작하니까) 순서 반환

 

으로 풀었다.

 

 

하지만

강사님은 코드를 확실히 줄였다.


강사님이 푼 코드

def is_leap(year):
  if year % 4 == 0:
    if year % 100 == 0:
      if year % 400 == 0:
        return True
      else:
        return False
    else:
      return True
  else:
    return False

def days_in_month(year, month):
  month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  
  if is_leap(year) and month == 2:
    return 29
  return month_days[month - 1]

  
#🚨 Do NOT change any of the code below 
year = int(input("Enter a year: "))
month = int(input("Enter a month: "))
days = days_in_month(year, month)
print(days)

 

하이라이트 된 이 부분을 확연히 단축시켰다.

if처럼 맞으면 위의 값 리턴, 틀리면 밑의 값 리턴 이라고 이해하면 될 듯!!

 

그리고 return은 더 연습해야 할 듯하다...

 

 

'개발공부 > Python' 카테고리의 다른 글

파이썬_튜플(tuple)  (0) 2023.03.17
파이썬_글자 뒤집기(string[::-1])  (0) 2023.03.16
파이썬_return 하는 이유는?  (0) 2023.03.16
파이썬_title()함수  (0) 2023.03.16
파이썬_출력과 함수(return)(수정중)  (0) 2023.03.16
profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!