사용자의 이름과 주민등록번호를 입력받아 생년월일과 성별을 추출한 후, 현재 날짜를 기준으로 만 나이를 계산하여 출력하는 프로그램을 작성해 보겠습니다.
생년월일을 입력받아 현재 날짜를 기준으로 만 나이를 계산하는 calculate_age 함수를 정의합니다.
from datetime import datetime
def calculate_age(birthday):
today = datetime.today()
age = today.year - birthday.year
if today.month < birthday.month or (today.month == birthday.month and today.day < birthday.day):
age -= 1
return age
이 함수는 먼저 datetime.today()를 사용해 현재 날짜를 가져옵니다. 기본 나이는 현재 연도에서 생년월일의 연도를 빼서 계산합니다. 하지만 만 나이를 계산할 때는 현재 월과 일을 생년월일의 월과 일과 비교하여, 생일이 지나지 않았으면 나이에서 1을 뺍니다. 최종적으로 계산된 나이를 반환합니다.
사용자로부터 이름과 주민등록번호를 입력받아 생년월일과 성별을 추출하고, 만 나이를 계산해 출력하는 main 함수를 정의합니다.
def main():
name = input("이름을 입력하세요: ")
rrn = input("주민등록번호를 입력하세요 (예: 901010-1234567): ")
# 주민등록번호에서 성별, 생년월일 추출
birth_year_prefix = "19" if rrn[7] in "12" else "20"
birth_year = int(birth_year_prefix + rrn[0:2])
birth_month = int(rrn[2:4])
birth_day = int(rrn[4:6])
birth_date = datetime(birth_year, birth_month, birth_day)
age = calculate_age(birth_date)
# 성별 판별
gender_digit = rrn[7]
gender = "남성" if gender_digit in "13" else "여성"
# 결과 출력
print(f"{name}({gender}) 만{age}세")
먼저, 사용자의 이름과 주민등록번호를 입력받고, 입력된 주민등록번호에서 성별과 생년월일을 추출합니다. 주민등록번호의 7번째 숫자가 1이나 2이면 출생 연도의 접두사를 "19"로, 3이나 4이면 "20"으로 설정합니다. 주민등록번호의 앞 두 자리를 사용해 출생 연도를 결정하고, 3번째와 4번째 자리를 사용해 출생 월을, 5번째와 6번째 자리를 사용해 출생 일을 결정합니다.
생년월일 정보를 통해 datetime 객체를 생성해 birth_date 변수에 저장합니다. 이후 calculate_age 함수를 호출하여 만 나이를 계산합니다.
주민등록번호의 7번째 숫자를 사용하여 성별을 판별합니다. 1이나 3이면 남성으로, 2나 4이면 여성으로 결정합니다.
마지막으로, 사용자 이름, 성별, 만 나이를 출력합니다.
전체 소스 코드는 다음과 같습니다.
from datetime import datetime
def calculate_age(birthday):
today = datetime.today()
age = today.year - birthday.year
if today.month < birthday.month or (today.month == birthday.month and today.day < birthday.day):
age -= 1
return age
def main():
name = input("이름을 입력하세요: ")
rrn = input("주민등록번호를 입력하세요 (예: 901010-1234567): ")
# 주민등록번호에서 성별, 생년월일 추출
birth_year_prefix = "19" if rrn[7] in "12" else "20"
birth_year = int(birth_year_prefix + rrn[0:2])
birth_month = int(rrn[2:4])
birth_day = int(rrn[4:6])
birth_date = datetime(birth_year, birth_month, birth_day)
age = calculate_age(birth_date)
# 성별 판별
gender_digit = rrn[7]
gender = "남성" if gender_digit in "13" else "여성"
# 결과 출력
print(f"{name}({gender}) 만{age}세")
if __name__ == "__main__":
main()
댓글