주민등록번호 유효성 검사 프로그램
예시) 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 |