문제 발생
https://school.programmers.co.kr/tryouts/85912/challenges
위의 문제를 풀던 중
id_pw: ["rabbit04", "98761"]
db: {'rardss': '123', 'yyoom': '1234', 'meosseugi': '1234'}
이와 같은 입력 값을 넣게 되었을 경우, 딕셔너리에서 해당하는 key 값을 찾지 못해((없는 key 값에 접근하려고 할 때) 발생하는 keyError가 발생하였다.
하지만 이 문제에서 해당하는 key 값을 찾지 못하였을 경우(즉 해당 id가 db에 없는 경우), fail이라는 메시지를 리턴해야한다. 그러기 위해서는 해당 에러를 예외 처리를 해야한다.
문제 해결
keyError가 발생하였을 때 예외 처리는 어떻게 해야할까?
keyError는 get() 메소드를 사용하면 해결할 수 있다.
db['rabbit04']로 접근하면 오류가 발생하지만 db.get('rabbit04')와 같이 접근하면 오류가 발생하지 않고 None이라는 값을 반환하고 이어서 아래의 코드를 실행한다. 따라서 key에 해당하는 value가 None이라면 fail을 리턴하도록 코드를 작성할 수 있다.
위의 문제를 다음과 같이 코드를 작성하였다.
def solution(id_pw, db):
answer = ''
db_dic = dict(db)
id, pw = id_pw[0], id_pw[1]
if db_dic.get(id) == None:
answer = 'fail'
else:
if (pw == db_dic[id]):
answer = 'login'
else:
answer = 'wrong pw'
return answer
'Algorithm 문제 풀이 > python' 카테고리의 다른 글
[python] 백준 1182번 부분수열의 합 (0) | 2022.08.18 |
---|---|
[python] 백준 14501번 퇴사 (0) | 2022.08.17 |
[python] 백준 10973번 이전 순열 (0) | 2022.08.16 |
[python] 백준 10866번 덱 (0) | 2022.08.03 |
[python] 백준 1991번 트리 순회 (0) | 2022.08.02 |