-
[파이썬/Python] 백준 1008번(A/B) - 단계별로 풀어보기 + [오류 발생시키기에 대한 간단한 언급]깜빡의 취미/파이썬을 합니다. 2021. 6. 27. 12:00728x90
문제는 아래와 같다.
사칙연산 단계의 마지막 문제. 앞선 세 문제를 잘 풀어보았다면, 이제는 그냥 복습 차원에서 문제를 푼다고 이해하면 된다. 게다가 나머지나 몫을 따로 구하는 것도 아닌, 그냥 나눗셈이다. 자세한 내용은 이미 앞선 게시글 등을 통해 정리해 두었으므로, 예시 답안부터 빠르게 제안해 본다.
[답안 예시 1] A,B = input().split() x = int(A) y = int(B) print(A/B)
[답안 예시 2] A,B = map(int, input().split()) print(A/B)
답안 예시 2의 첫 번째 줄에 대한 추가 정보는 아래에 자세히 정리해 두었다.
[답안 예시 3] class 오류(Exception): pass def 예시(): A, B = map(int, input().split()) -> A,B를 입력 받습니다. if not 0 < A < 10 or not 0 < B < 10: -> 만일 0 < A, B < 10이 아니라면 raise 오류() -> 오류를 발생시켜 주세요. print(A/B) -> 문제 없으면 A/B 출력해 주세요. try: 예시() -> 예시() 함수를 작동시킵니다. except 오류: -> 오류가 뜨면 print("제대로 된 수를 써 주세요 휴먼.") -> 왼쪽의 문장을 출력해 주세요!
답안 예시 3의 경우 0 < A, B < 10이라는 조건을 충족하지 못하면 오류가 발생하도록, 임의로 오류를 발생시킨 경우이다. 간단하게 부연 설명을 진행하겠다. 참고로 아래의 책에서 배운 법임을 밝힌다.
먼저 Exception이라는 내장 클래스는 오류를 의미한다고 이해하면 빠르다. 이 Exception 클래스를 '오류'라는 클래스에 상속시켰다. 이제 해당 식에서는 '오류'라는 클래스 또한 임의로 발생시킨 오류를 의미하게 되었다.
다음으로 예시 함수를 정의했다. 위의 설명과 같이, 예시라는 함수는 A, B를 입력받았을 때 조건에 맞지 않을 경우 임의로 오류를 발생시키게 된다.
마지막으로 만들어진 예시() 함수를 작동시킨 후, 심어 둔 오류가 작동하는 경우 "제대로 된 수를 써 주세요 휴먼."하고 작동하게끔 한다.
약간의 변칙으로 오류 클래스 자체에 __str__(self)라는 함수를 제시하는 방식도 있는데, 관련해서는 1001번(A-B)의 맨 마지막에 제시되어 있다.
새로운 시도를 하려고 공부 중인데... 생각보다 머리가 잘 돌아가지 않습니다. 단계를 거듭할수록 다양한 풀이 방법이 등장하는데, 점점 효율적인 방법을 잃어가고 있는 느낌입니다. 차차 더 잘하게 되겠죠.
'깜빡의 취미 > 파이썬을 합니다.' 카테고리의 다른 글
[파이썬/Python] 백준 10430번(나머지) 단계별로 풀어보기 + [결과값끼리 같은지 확인하기(feat. 귀차니즘)] (2) 2021.07.11 [파이썬/Python] 백준 10869번(사칙연산) - 단계별로 풀어보기 + [간단한 오류 잡기(feat. 나눗셈)] (0) 2021.07.04 [파이썬/Python] 백준 10998번(AxB) - 단계별로 풀어보기 + [오류 발생으로 조건 명시하기] (2) 2021.06.21 [파이썬/Python] 백준 1001번(A-B) - 단계별로 풀어보기 + [0 < A, B < 10 조건 명시하기] (0) 2021.06.20 [파이썬/Python] 백준 1000번(A+B) - 단계별로 풀어보기 (0) 2021.06.18