*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*
주민등록번호 유효성 검사 프로그램을 만들어보자
- 0 0 1 0 1 1 - 3 0 6 8 5 1 8 ->인덱스값으로 12자리
- 각 자리에 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으로 나눈 나머지 값을 구함
- 결과값이 마지막 주민등록번호와 일치하면 유효한 주민번호
- 단, 클래스로 설계하고 객체를 이용하여 프로그램을 동작
클래스 설계+객체->생성자 함수 생성, 구하려는 값은 매개변수 1개로 처리하기
각 자리에 2,3,4,5,6,7,8,9,2,3,4,5 를 곱하고 더함(마지막 주민등록번호 숫자는 제외)-> 동일한 계산과정 총 11번 반복하므로 for문 처리
연산과정은 함수 1개로 모든 처리가 가능하게
결과값 if문 조건 걸기: 조건이 % 10과 마지막 번호 일치 2가지만 있으므로 if, else만 사용(if, elif만 사용하더라도 상관없음), 넣으려는 인덱스값 자리는 len()함수로 13자리이므로 if조건문에 !=13처리
from typing import Final
#구하려는 값
#나중에 객체로 설정
#계산
class Number:
def __init__(self,inn): #객체값 생성자 함수 설정
self.inn=inn
def func1(self): # 연산과정 1개의 메서드(함수)로 처리할 수 있게
if len(self.inn) !=13: #입력 숫자 인덱스길이가 13이 아닐경우 False 처리
return False
count=0 # 곱하고 더한 최종값
first=[2,3,4,5,6,7,8,9,2,3,4,5] #각자리에 곱하려는 값 리스트
#2~5까지 리스트로 만들고 1:1 대칭이 되게, 계산하려는 인덱스 갯수는 0~11번까지 총 12개
for i in range(0,12):
count+=self.inn[i]*first[i] #count=count+곱한값
count1= count %11
count2=11-count1
if count2 >9:
return count2 % 10 == self.inn[12]
else :
return count2 == self.inn[12]
#객체 삽입
inner=input('입력 값') #입력함수=매개변수
inn=[int(x) for x in str(inner)] #문자열 입력값->정수형 처리
source=Number(inn) #객체 삽입
source.func1() #클래스 메서드 삽입
print(source.func1())
#if문
if source.func1:
print('유효')
else:
print('우효하지 않음')
'Python 기초' 카테고리의 다른 글
파이썬 기초(19)-파일 입출력 (0) | 2024.03.20 |
---|---|
파이썬 기초(18)-모듈과 random모듈 (0) | 2024.03.20 |
파이썬 기초(17)-예외처리 (0) | 2024.03.19 |
파이썬 기초(16)-스페셜 메서드 (0) | 2024.03.18 |
파이썬 기초(15)-상속 (0) | 2024.03.18 |