티스토리 뷰

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

    (조건)

  • 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로 나눈 나머지 값  ex) 101 % 11 = 3
  • 11에서 위 값을 뺌    ex) 11 - 3 = 8
  • 위 결과가 2자리인 경우, 10으로 나눈 나머지 값을 구함
  • 결과값이 마지막 주민등록번호와 일치하면 유효성 통과
  • 단, 클래스로 설계하고 객체를 이용하여 프로그램 작성

1) 방법 1 (클래스문 사용 x)

# 1. 주민등록번호 입력받기
id = input('주민번호 13자리 입력 : ').replace('-','')
calc = (2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5)
result = 0

# 2. 각 자릿수끼리 곱해서 더함 (마지막 숫자 제외)
for i in range(len(calc)):
  result += int(id[i]) * calc[i]

# 3. 11 - (result를 11로 나눈 나머지)
result2 = 11 - result%11

# 4. result2 가 두 자리인 경우 10으로 나눈 나머지
if len(str(result2)) == 2:
  result2 = result2%10
else :
  print(f'계산 결과값 :{result2}')

# 5. result2 가 마지막 주민등록번호와 일치하면 유효성 통과
print('유효성 검사 통과') if result2 == int(id[len(id)-1]) else print('유효성 검사 탈락')

 

(결과)

주민번호 13자리 입력 : 001011-3068518
계산 결과값 :8
유효성 검사 통과

 

2) 방법 2 (클래스문 사용 o)

# 1. 클래스문 생성
class Id:
  def __init__(self, num):
    self.num = num.replace('-','')

  def test(self):
    calc = (2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5)
    last_num = int(self.num[len(self.num)-1])
    result1 = 0
    result2 = 0
    result3 = 0

    # 1) 각 자릿수끼리 곱해서 더함 (마지막 숫자 제외)
    for i in range(len(calc)):
      result1 += int(self.num[i]) * calc[i]
    print(f'(1단계) 각 자리수 곱의 합 : {result1}')


    # 2) 11 - (result를 11로 나눈 나머지), 두 자리면 10으로 한번 더 나눈 나머지
    result2 = (11 - result1%11) % 10
    print(f'(2단계) 11 - {result1}을 11로 나눈 나머지 : {result2}')

    # 3) 계산 결과가 마지막 주민등록번호와 일치하면 유효성 통과
    if result2 == last_num:
      print(f'최종 계산 결과 값 : {result2}')
      print(f'마지막 주민등록번호 : {last_num}')
      print('결과 : 유효성 검사 통과!!')

    else:
      print(f'최종 계산 결과 값 : {result2}')
      print(f'마지막 주민등록번호 : {last_num}')
      print('결과 : 유효성 검사 탈락ㅜㅜ')
      
 # 2. 클래스문 적용
id = Id('001011-3068518')
id.test()

 

(결과)

(1단계) 각 자리수 곱의 합 : 102
(2단계) 11 - 102을 11로 나눈 나머지 : 8
최종 계산 결과 값 : 8
마지막 주민등록번호 : 8
결과 : 유효성 검사 통과!!

'Python' 카테고리의 다른 글

21. 파일 입출력  (0) 2024.03.21
20. 파이썬의 모듈  (0) 2024.03.21
18. 파이썬의 예외처리  (0) 2024.03.19
17. 파이썬의 스페셜 메서드  (0) 2024.03.19
16. 파이썬의 상속  (0) 2024.03.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함