본문 바로가기

파이썬(PYTHON)/프로젝트
[파이썬(Python)] 나이 계산


'''
#나이 계산 프로그램

주민번호를 입력받으면 몇 살인지 계산

★input을 통해 입력받은 값은 전부 문자열(str)

6자리숫자-7자리숫자

1. 주민등록번호 입력 받음
*6자리숫자-7자리숫자
- -(하이픈)이 존재하는지 확인
- 하이픈을 제외한 나머지가 숫자 형식인지


2. 주민번호 7번째자리 숫자 추출
- 1900년대생과 2000년대생 나누기 (1,2면 1900년대생 / 3,4면 2000년대생)

3-1. 1900년대생은 2022-19+int("추출")

3-2. 2000년대생은 2022-20+int("추출")
'''

**이건 내가 짠 코드!!!**

import sys

ssn = input("주민등록번호를 입력해주세요. ")
hyphen = ssn.find("-")

if (hyphen == -1) :
    print("하이픈이 누락되었습니다. 다시 확인해주세요.")
    sys.exit()
    
ssn2 = ssn.split("-")

if ( len(ssn2[0]) != 6 ) :
    print("주민등록번호 앞자리 숫자가 6자리가 아닙니다.")
    sys.exit()

if ( len(ssn2[1]) != 7) :
    print("주민등록번호 뒷자리 숫자가 7자리가 아닙니다.")
    sys.exit()

if ( ssn2[0].isnumeric() == False ) :
    print("주민등록번호 앞자리에 숫자가 아닌 문자가 존재합니다.")  
    sys.exit()

if ( ssn2[1].isnumeric() == False ) :
    print("주민등록번호 뒷자리에 숫자가 아닌 문자가 존재합니다.")
    sys.exit()

if ( ssn[7] == '3' or ssn[7] == '4') :
    print( 2022 - 2000 - int(ssn[0:2]) + 1 )
        
elif ( ssn[7] == '1' or ssn[7] == '2') :
    print( 2022 - 1900 - int(ssn[0:2]) + 1)

else :
    print("계산할 수 없습니다.")


===========================================================================

datetime, 함수 이용해서 업그레이드 (7.16)========================================================================== ==============

import sys
import datetime

def validSsn(ssn) :
    hyphen = ssn.find("-")

    if (hyphen == -1) :
        print("하이픈이 누락되었습니다. 다시 확인해주세요.")
        sys.exit()
        
    ssn2 = ssn.split("-")

    if ( len(ssn2[0]) != 6 ) :
        print("주민등록번호 앞자리 숫자가 6자리가 아닙니다.")
        sys.exit()

    if ( len(ssn2[1]) != 7) :
        print("주민등록번호 뒷자리 숫자가 7자리가 아닙니다.")
        sys.exit()

    if ( ssn2[0].isnumeric() == False ) :
        print("주민등록번호 앞자리에 숫자가 아닌 문자가 존재합니다.")  
        sys.exit()

    if ( ssn2[1].isnumeric() == False ) :
        print("주민등록번호 뒷자리에 숫자가 아닌 문자가 존재합니다.")
        sys.exit()
        

ssn = input("주민등록번호를 입력해주세요. ")

validSsn(ssn)
    

if ( ssn[7] == '3' or ssn[7] == '4') :
    print( datetime.datetime.now().year - 2000 - int(ssn[0:2]) + 1 )
        
elif ( ssn[7] == '1' or ssn[7] == '2') :
    print( datetime.datetime.now().year - 1900 - int(ssn[0:2]) + 1)

else :
    print("계산할 수 없습니다.")


==========================================================================
==============

**강사님 예시 코드 ↓ **

import sys

ssn = input("주민등록번호를 입력해주세요. ")

hyphen = ssn.find("-")

if (hyphen == -1) :
    print("하이픈이 누락되었습니다. 다시 확인해주세요.")
    sys.exit()

ssn2 = ssn.split("-")
if ( len(ssn2[0]) != 6 ) :
    print("주민등록번호 앞자리 숫자가 6자리가 아닙니다.")
    sys.exit()

if ( len(ssn2[1]) != 7) :
    print("주민등록번호 뒷자리 숫자가 7자리가 아닙니다.")
    sys.exit()

if ( ssn2[0].isnumeric() == False ) :
    print("주민등록번호 앞자리에 숫자가 아닌 문자가 존재합니다.")
    sys.exit()

if ( ssn2[1].isnumeric == False) :
    print("주민등록번호 앞자리에 숫자가 아닌 문자가 존재합니다.")
    sys.exit()

birth = ssn[0:2]
gender = ssn[7]

if (gender == "1" or gender == "2"):
    birth = 1900 + int(birth)
    print( datetime.datetime.now().year - birth +1)

elif (gender == '3' or gender == '4') :
     birth = 2000 + int(birth)
     print( datetime.datetime.now().year - birth+1)

else :
    print("계산할 수 없습니다.")import sys
import datetime

def validSsn(ssn) :

    hyphen = ssn.find("-")

    if (hyphen == -1) :
        print("하이픈이 누락되었습니다. 다시 확인해주세요.")
        sys.exit()

    ssn2 = ssn.split("-")
    if ( len(ssn2[0]) != 6 ) :
        print("주민등록번호 앞자리 숫자가 6자리가 아닙니다.")
        sys.exit()

    if ( len(ssn2[1]) != 7) :
        print("주민등록번호 뒷자리 숫자가 7자리가 아닙니다.")
        sys.exit()

    if ( ssn2[0].isnumeric() == False ) :
        print("주민등록번호 앞자리에 숫자가 아닌 문자가 존재합니다.")
        sys.exit()

    if ( ssn2[1].isnumeric == False) :
        print("주민등록번호 뒷자리에 숫자가 아닌 문자가 존재합니다.")
        sys.exit()

ssn = input("주민등록번호를 입력해주세요. ")

birth = ssn[0:2]
gender = ssn[7]

if (gender == "1" or gender == "2"):
    birth = 1900 + int(birth)
    print(datetime.datetime.now().year - birth +1)

elif (gender == '3' or gender == '4') :
     birth = 2000 + int(birth)
     print(datetime.datetime.now().year - birth+1)

else :
    print("계산할 수 없습니다.")