본문 바로가기
파이썬

18. 파이썬의 예외처리& 주민번호 유효성 과제

by 곽정우 2024. 3. 19.

1. 예외

예외(Exception)는 프로그램 실행 중 발생할 수 있는 예상치 못한 문제 또는 오류 상황을 의미합니다. 예외가 발생하면 프로그램은 중단되기 때문에 이를 적절하게 처리하여 중단을 방지하거나 오류에 대한 정보를 사용자에게 제공해야 합니다.

 

2. 예외 처리 기본 구조

 

'except' 뒤에 오류 코드를 넣지 않아도 예외 처리가 작동합니다.

 

 

3. Exception 클래스

Exception 클래스는 파이썬의 내장 예외 계층 구조에서 거의 모든 내장 예외의 기본 클래스입니다. 이 클래스는 사용자 정의 예외를 만들거나 특정 예외 유형을 잡기 위한 기본적인 인터페이스를 제공합니다.

 

4. 사용자 정의 예외 클래스를 직접 만들고 활용하기

※. 과제1:

주민등록번호 유효성 검사 프로그램을 만들어보자

  • 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으로 나눈 나머지 값을 구함
  • 결과값이 마지막 주민등록번호와 일치하면 유효한 주민번호

단, 클래스로 설계하고 객체를 이용하여 프로그램을 동작

 답:

class Rrn:
    def __init__(self, rrn):
        self.rrn = rrn

    def validate(self):
        rrn_list = [int(digit) for digit in self.rrn.replace('-', '')[:-1]]
        multiply = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]
        check = sum([digit * multiply[idx] for idx, digit in enumerate(rrn_list)]) % 11
        check = 11 - check
        check %= 10
        return check == int(self.rrn[-1])

rrn = input("주민번호를 입력하세요:")

validator = Rrn(rrn)
is_valid = validator.validate()
if is_valid:
    print("유효한 주민등록번호입니다.")
else:
    print("유효하지 않은 주민등록번호입니다.")

실행 결과:

'파이썬' 카테고리의 다른 글

20. 파일 입출력  (0) 2024.03.20
19. 파이썬 모듈  (0) 2024.03.20
17. 스페셜 메소드  (0) 2024.03.19
16. 파이썬 상속  (0) 2024.03.19
15. 객체지향과 클래스&과제  (1) 2024.03.18