지금까지 코드를 작성하면서 많은 오류를 확인할 수 있었다.
대표적인 오류 : KeyError, IndexError, TypeError
# KeyError
딕셔너리 = {"키":"값"}
값 = 딕셔너리["존재하지 않는 키"]
# 결과
KeyError: '존재하지 않는 키'
# IndexError
fruit_list = ["Apple", "Banana", "Pear"]
fruit = fruit_list[3]
# 결과IndexError: list index out of range
# TypeError
text = "abc"
print(text + 5)
# 결과
TypeError: can only concatenate str (not "int") to str
예외처리의 방법
try, except, else, finally 를 사용.
try :
오류를 실행할 수 있는 구문
except :
오류가 발생했을 때 실행할 구문
else :
오류가 발생하지 않았을 때 실행할 구문
finally:
오류와 상관없이 무조건 실행할 구문
예시
try :# 오류를 발생시킬 수 있는 구문
file = open("a_file.txt")
a_dictionary = {"key" : "value"}
print(a_dictionary["key_2"])
except FileNotFoundError :# FileNotFoundError 발생 시 실행할 구문
file = open("a_file.txt", "w")
file.write("안녕하세요")
except KeyError :# KeyError 발생 시 실행할 구문print("키가 존재하지 않아요")
else :# 오류가 발생하지 않을 시 실행할 구문
content = file.read()
print(content)
finally:# 무조건 실행할 구문
file.close()
raise 구문
raise 구문은 예외를 발생시킬 때 사용한다.
예외를 발생시켜야하는 구문 예시
height = float(input("Height : "))
weight = int(input("Weight : "))
if height > 3:
raise ValueError("인간은 키가 3m를 넘길 수 없어요.")
bmi = weight / height ** 2
print(bmi)
# 결과값ValueError: 인간은 키가 3m를 넘길 수 없어요.
26일차에 작성한 NATO 알파벳 프로그램 예외처리하기
알파벳이 아닌 문자를 입력시 발생하는 오류 예외처리.
import pandas
data = pandas.read_csv("nato_phonetic_alphabet.csv")
data_dict = {row.letter:row.code for (index, row) in data.iterrows()}
word = input("영문 문자를 입력해주세요.")
word_list = [n.upper() for n in word]
try :
result = [data_dict[n] for n in word_list]
except KeyError :
print("죄송합니다. 알파벳만 입력해주세요.")
else :
print(result)
JSON 데이터
json 데이터는 기본적으로 딕셔너리 형태를 하고있다.
json.dump() - 쓰기