응용) 파이썬을 활용하여 주민등록번호 유효성 검사 해보기

# 주민등록번호 유효성 검사로 파이썬 프로그래밍 학습해보기

  • 조건1. 주민등록번호는 13자리 정상 입력을 경우로 가정한다.
  • 조건2. 주민등록번호 사이에는 '-'를 입력하여 구분한다.

  • 절차 1.
    • 마지막 13자리를 제외한 1~12자리의 숫자에 2,3,4,5,6,7,8,9,2,3,4,5를 차례로 곱한 뒤 그 값의 총 합을 구하라.

 

  • 절차 2.
    • 구한 총 합의 결과 값을 11로 나누어 나머지의 값을 구하라.

 

  • 절차 3.
    • 11에서 구한 나머지의 값의 뺀 값을 구하라.

 

  • 절차 4. 
    • 11을 뺀 값이 주민등록번호 13번째 자리와 숫자가 일치하는지 확인하라.

예시에 준비된 가상의 주민등록번호 : 821010-1635210

# 계산과정

  • 절차1 : (8*2 + 2*3 + 1*4 + 0*5 + 1*6 + 0*7 + 1*8 + 6*9 + 3*2 + 5*3 + 2*4 + 1*5)
  • 절차2 : 128 % 11
  • 절차3 : 11 - 7 = 4
  • 결과 : 결과 값 4가 주민등록번호의 13번째 자리(0)의 값과 다르므로 유효하지 않는 주민등록번호임. 

 

jumin = input("주민등록번호 : ") # 주민등록번호 입력
jumin = jumin.split('-') # 주민등록번호를 2개의 항목으로 분리
jumin = jumin[0] + jumin[1] # 분리된 값을 리스트가 아닌 문자열로 저장

j=2 ; tot=0
# j = 2~9까지 증가, 10이되면 다시 2로 초기화
# tot = 각각의 숫자를 곱한 값의 총 합을 저장 할 변수

for i in range(0,len(jumin)-1):
    tot += int(jumin[i]) * j
    j+=1
    if j == 10: j=2
# 절차1. 반복문을 이용하여 계산
print(tot) # 절차1. 값 확인

tot = 11 - (tot % 11)
print(tot)
# 절차2와 절차3을 계산한 최종 값 확인

if int(jumin[-1]) == tot:
    print("유효")
else:
    print("유효하지 않음")
# 주민등록번호 마지막 자리와 최종 값이 일치하는지 확인