본문 바로가기

Algorithm 문제 풀이/python

[python] keyError 예외 처리하기

문제 발생

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