주민등록번호 유효성 검사 프로그램을 만들어보자
* 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 |