본문 바로가기

코딩/파이썬

파이썬 과제 (4). 주민등록번호 유효성 검사

주민등록번호 유효성 검사 프로그램을 만들어보자

 

 - 각 자리에 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 곱하고 더함(마지막 주민등록번호 숫자는 제외)

           0+0+4+0+6+7+24+0+12+24+20+5 = 102

 - 11로 나눈 나머지 값을 구함

           102 % 11 = 3

 - 11에서 위 값을 뺌

            11 - 3 = 8

 - 위 결과가 2자리인 경우 10으로 나눈 나머지 값을 구함

 - 결과값이 마지막 주민등록번호와 일치하면 유효한 주민번호

 

 단, 클래스로 설계하고 객체를 이용하여 프로그램을 동작

 

class Jumin:
    def __init__(self, jumin):
        self.jumin = jumin  # 입력된 주민등록번호를 객체의 속성으로 설정

    def validate(self):
        majimak = int(self.jumin[-1])  # 입력된 주민등록번호의 마지막 숫자를 추출하여 변수에 저장
        gob = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]  # 주민등록번호의 각 자릿수에 곱해질 가중치를 리스트로 정의
        total = 0  # 주민등록번호의 유효성 검사를 위한 총 합 변수 초기화

        # 각 자릿수에 해당하는 가중치를 곱하여 총 합을 계산
        for i in range(12):
            sum = int(self.jumin[i]) * gob[i]  # 각 자릿수에 해당하는 값과 가중치를 곱한 결과를 변수에 저장
            total += sum  # 계산된 결과를 총 합에 더함

        nameoji = total % 11  # 총 합을 11로 나눈 나머지를 구함

        if nameoji >= 10:  # 나머지가 10 이상인 경우
            nameoji %= 10  # 10으로 나눈 나머지를 다시 구함

        # 주민등록번호의 유효성 검사
        if (11 - nameoji) % 10 == majimak:  # 계산된 결과와 주민등록번호의 마지막 숫자가 일치하는지 확인
            return True  # 유효한 주민등록번호인 경우 True 반환
        else:
            return False  # 유효하지 않은 주민등록번호인 경우 False 반환


# 주민등록번호 입력 받기
jumin = input("주민등록번호를 입력하세요, (-)는 빼고: ")

# Jumin 클래스의 인스턴스 생성
validator = Jumin(jumin)

# 주민등록번호의 유효성 검사 및 결과 출력
if validator.validate():  # 주민등록번호가 유효한 경우
     print("유효한 주민등록번호입니다.")  # 메시지 출력
else:  # 주민등록번호가 유효하지 않은 경우
     print("유효하지 않은 주민등록번호입니다.")  # 메시지 출력

'코딩 > 파이썬' 카테고리의 다른 글

파이썬 모듈  (0) 2024.03.20
파일 입출력  (0) 2024.03.20
파이썬의 예외처리  (0) 2024.03.20
스페셜 메서드  (0) 2024.03.20
파이썬 상속  (0) 2024.03.19