본문 바로가기

IT프로그래밍/파이썬

[Python]파이썬 조건문을 활용한 나이, 만나이 계산 출력하기

오늘은 파이썬(Python)을 사용하여 나이와 만나이를 계산하는 방법에 대해 알려드리겠습니다.

 

나이와 만나이는 일상 생활에서 자주 사용되는 개념으로, 생년월일을 기반으로 계산됩니다.
2023년 6월 28일부터 우리나라에서도 만나이를 도입하게 되어서 더 자주 사용하게 될 것 같습니다.


 

만나이 계산 하는 방법

만나이를 계산하는 방법은
생일이 지났으면 [한국나이-1살]
생일이 지나지 않았으면 [한국나이-2살]로 만나이를 계산할 수 있습니다.
파이썬의 간단한 기능들을 활용하여 이를 계산해보도록 하겠습니다.


 

파이썬(Python)으로 한국나이와 만나이 계산

사용자 이름 입력받기

우선 나이와 만나이를 계산하기 위해서는 사용자의 생년월일만 알면 됩니다.
하지만! 사용자의 이름도 입력받아서 마지막 결과를 출력할 때, 같이 띄워주기 위해서
사용자의 이름을 입력받는 코드를 작성해 주도록 합니다.

userName = input("이름을 입력해주세요 : ")

 

사용자의 입력을 받는 input함수를 통해서 userName에 사용자가 입력한 값을 저장합니다.

 

 

사용자 생년월일 입력받기

이제 파이썬을 이용해서 나이와 만나이를 계산하기 위해,
사용자의 생년월일을 입력받도록 하겠습니다.
사용자로부터 생년월일을 입력받기 위해 다음과 같은 코드를 사용할 수 있습니다.

userBirthYear = int(input("태어난 년도를 입력해주세요(ex:1990) : "))
userBirthMonth = int(input("태어난 월을 입력해주세요(ex:3) : "))
userBirthDay = int(input("태어난 일을 입력해주세요(ex:10) : "))

input함수를 통해서 사용자가 태어난 년, 월, 일을 각각 userBirthYear, userBirthMonth, userBirthDay에
할당합니다. int()로 감싸서 해당 변수의 자료형을 int로 지정했습니다.
int로 지정한 이유는 나이와 만나이를 계산할 때는 int로 계산해야 하기 때문입니다.

 

현재 년, 월, 일을 변수에 할당하기

이제 사용자의 생년월일을 입력받았으니,
현재 사용자의 나이와 만나이를 계산하기 위해 필요한
현재시간을 년, 월, 일로 각각 변수에 할당합니다.

thisYear = datetime.date.today().year
thisMonth = datetime.date.today().month
thisDay = datetime.date.today().day

현재 연도, 월, 일을 각각 thisYear, thisMonth, thisDay 변수에 할당합니다.
현재시간을 알기 위해서 datetime을 사용하였으며,
이것은 파이썬 코드 최상단에 import datetime이 선언되어 있어야만 사용할 수 있습니다.

#코드 최상단에 기입 
import datetime

VSCODE나 파이참등 대부분의 IDE에서 datetime에서 에러가 발생했을 때,
[컨트롤 + .] 을 입력하거 [알트 + 엔터]를 입력하면 자동으로 입력되거나 해당 선언문을 import 시키는 힌트창이 나올 것 입니다.

 

 

한국 나이 계산하여 출력하기

이제 사용자에게서 입력받은 생년월일을 토대로 우선 한국나이를 계산하여 표출해줍시다.
한국나이의 계산은 [현재년도-사용자의 생년 + 1]로 계산 할 수 있습니다.
이것을 우선 print() 함수를 이용해서 표출해주는 코드는 아래와 같습니다.

print("%s 님의 한국나이는 현재(%d년) %d세 이고," %(userName, thisYear, thisYear - userBirthYear + 1))

 

 

 

사용자 생년월일을 통해 만나이 계산하기

이제 사용자가 입력한 생년월일을 토대로 만나이를 계산해서 표출해주는 부분입니다.
만나이를 계산하는 방법은 위에서 설명드린 것 처럼 사용자의 생일이 지났는지 아닌지 여부입니다.
입력받은 생년월일이 현재 월, 일 기준으로 지났는지 아닌지를 파이썬의 조건문으로 판단할 수 있습니다.

isBirthdayPassed = False

if(thisMonth > userBirthMonth) :
    isBirthdayPassed = True
elif(thisMonth == userBirthMonth) :
    if(thisDay >= userBirthDay) :
        isBirthdayPassed = True
    else :
        isBirthdayPassed = False
else :
    isBirthdayPassed = False;

 

isBirthdayPassed변수는 사용자의 생일이 지났는지 아닌지 값을 저장하는 boolean형 변수를 선언하고, False로 초기화 하였습니다.
위의 조건문을 풀면 아래와 같습니다.
현재 월(Month)이 사용자의 생일 월(Month) 보다 큰가?
-> 생일이 지남
현재 월(Month)이 사용자의 생일 월(Month) 과 같은가?
-> 현재 일(Day)이 사용자의 생일 일(Day)보다 크거나 같은가 ?
-> 생일이 지남
-> 현재 일(Day)이 사용자의 생일 일(Day)보다 작은가?
-> 생일이 지나지 않음
현재 월(Month)이 사용자의 생일 월(Month) 보다 작은가?
-> 생일이 지나지 않음

즉 사용자가 입력한 생년월일이 현재 날짜를 기준으로 지났으면
isBirthdayPassed 를 True로
지나지 않았으면
isBirthdayPassed 를 False로 변경 시켜줍니다.

위의 조건문에서 isBirthdayPassed는 False로 초기화를 했기때문에, 사실
생일이 지나지 않은 조건은 달지 않아도 괜찮습니다.
(하지만 이후에 수정이 될 수 있거나, 다른 사람들이 봤을 때 좀더 명확히 하기 위해서 적어두기도 합니다.)

아래는 지나지 않았을 경우에 대해 False로 할당하는 것을 제외했을 때의 파이썬 조건문 코드입니다.

if(thisMonth > userBirthMonth) :
    isBirthdayPassed = True
elif(thisMonth == userBirthMonth) :
    if(thisDay >= userBirthDay) :
        isBirthdayPassed = True

이제 사용자가 입력한 생일이 지났는지 안지났는지 판별을 했으니, 사용자의 만나이를 계산할 수 있습니다.

 

 

사용자 만나이 출력하기

if(isBirthdayPassed == True) :
    print("만 나이는 %d세 입니다." %(thisYear - userBirthYear))
else :
    print("만 나이는 %d세 입니다." %(thisYear - userBirthYear - 1))

생일이 지나서 isBirthdayPassed에 True가 할당되어 있다면
한국나이(thisYear - userBirthYear + 1)에서 1을 빼주면 됩니다.
생일이 지나지 않아서 isBirthdayPassed에 False가 할당되어 있다면
한국나이(thisYear - userBirthYear + 1)에서 2를 빼주면 만나이를 구할 수 있습니다.

 

 


파이썬(Python)으로 나이와 만나이를 계산하여 출력하는 전체 코드

import datetime

userName = input("이름을 입력해주세요 : ")

userBirthYear = int(input("태어난 년도를 입력해주세요(ex:1990) : "))
userBirthMonth = int(input("태어난 월을 입력해주세요(ex:3) : "))
userBirthDay = int(input("태어난 일을 입력해주세요(ex:10) : "))

thisYear = datetime.date.today().year
thisMonth = datetime.date.today().month
thisDay = datetime.date.today().day

print("%s 님의 한국나이는 현재(%d년) %d세 이고," %(userName, thisYear, thisYear - userBirthYear + 1))

isBirthdayPassed = False

if(thisMonth > userBirthMonth) :
    isBirthdayPassed = True
elif(thisMonth == userBirthMonth) :
    if(thisDay >= userBirthDay) :
        isBirthdayPassed = True
    else :
        isBirthdayPassed = False
else :
    isBirthdayPassed = False;

if(isBirthdayPassed == True) :
    print("만 나이는 %d세 입니다." %(thisYear - userBirthYear))
else :
    print("만 나이는 %d세 입니다." %(thisYear - userBirthYear - 1))

 

 

 

Python으로 나이 만나이 계산하는 전체 코드
Python으로 나이 만나이 계산하는 전체 코드


 

Python 나이, 만나이 계산 출력 결과

제가 예제를 수행한 시점은 2023년 7월 5일 입니다. 해당일을 기준으로 생일이 지났을 때와 안지났을 때의 결과를 각각 출력해보면 아래와 같습니다.

생일이 지나지 않은 경우 나이와 만나이를 표출

Python으로 나이 만나이 계산 결과 1
Python으로 나이 만나이 계산 결과 1

 

생일이 지난 경우 나이와 만나이를 표출

Python으로 나이 만나이 계산 결과 2
Python으로 나이 만나이 계산 결과 2

 


파이썬 조건문을 사용하여 한국 나이와 만나이를 계산해보았습니다.
Pyhton 관련 포스팅으로 다시 찾아뵙겠습니다.

감사합니다.