출처: 유데미 안젤라 파이썬 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 |