Python/개념

2024-03-19 과제 주민등록번호 유효성 검사

nomad06 2024. 3. 19. 17:02

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

* 0 0 1 0 1 1 - 3 0 6 8 5 1 8
* 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으로 나눈 나머지 값을 구함
결과값이 마지막 주민들록번호와 일치하면 유효한 주민번호
단, 클래스로 설계하고 객체를 이용하여 프로그램을 동작

 

# 0 0 1 0 1 1 3 0 6 8 5 1 8

class Jumin:
    def __init__(self, li):
        self.li = li

    def check (self):
        if len(self. li) != 13: 
            return False
       
        jumin = [int(i) for i in self.li]   # for i in jumin => int(i)로 반환하라
        weights = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]

        # 곱하기
        checksum = sum(jumin * weight for jumin, weight in zip(jumin, weights))
        # print(checksum)  # => 102

        # 나누기 11
        div = checksum % 11
        # print(div)

        # 11에서 div 값을 뺌
        sub = 11 - div if div !=0 else 1
        # print(sub)

        #검사
        return jumin[-1] == sub

jumin = input('주민등록번호 13자리를 입력하세요: ').split(' ')
# jumin = ['0', '0', '1', '0', '1', '1', '3', '0', '6', '8', '5', '1', '8']


check1 = Jumin(jumin)
print(f'확인: {check1.check()}')
주민등록번호 13자리를 입력하세요: 0 0 1 0 1 1 3 0 6 8 5 1 8
확인: True

 

'Python > 개념' 카테고리의 다른 글

2024-03-20 파일 입출력  (0) 2024.03.20
2024-03-20 파이썬 모듈  (0) 2024.03.20
2024-03-19파이썬의 예외처리  (0) 2024.03.19
2024-03-19 파이썬 스페셜(매직) 메소드  (0) 2024.03.19
2024-03-19 파이썬 상속  (1) 2024.03.19