본문 바로가기
Python/개념

Day 7. 과제_주민번호 유효성 검사

by 사라리24 2024. 3. 20.
SMALL

주민등록번호 유효성 검사 프로그램


예시) 0 0 1 0 1 1 - 3 0 6 8 5 1 8


1. 각 자리에 2,3,4,5,6,7,8,9,2,3,4,5 를 곱하고 더함(마지막 주민등록번호 숫자는 제외)
------------->   0 + 0 + 4 + 6 + 7 + 24 + 0 + 12 + 24 + 20 + 5 = 102


2. 11로 나눈 나머지 값을 구함

-------------> 102 % 11 = 3 

3. 11에서 위 값을 뺌 (단, 위 결과가 2자리인 경우 10으로 나눈 나머지 값을 구함)

-------------> 11 - 3 = 8 

4.  결과값이 마지막 주민등록번호와 일치하면 유호한 주민번호
-------------> 8 = 8

 

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

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

 

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

      def check (self):
          if len(self. li) != 13:
              return False

          else:
            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자리를 입력하세요: 0010113068518
확인: True

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

Day 8-2. 파일 입출력  (0) 2024.03.20
Day 8-1. 파이썬 모듈  (0) 2024.03.20
Day 6. 과제_가위바위보  (0) 2024.03.18
Day 7-3. 파이썬의 예외처리  (0) 2024.03.18
Day 7-2. 파이썬 스페셜(매직) 메소드  (0) 2024.03.18