파이썬/파이썬(python) 중급

[30-4 파이썬] 예외처리 연습문제- while, 함수 재귀호출 사용하기, json파일

Olivia-BlackCherry 2022. 9. 19. 17:15

<예외처리하는 방법- 업그레이드>

이전에 배웠던 나토음성문자 생성기를 가지고 예외처리를 연습해보자.

 

음성 문자 생성기에 알파벳이 아닌 숫자나 특수기호를 넣으면 

에러가 난다. 

예외처리를 통해 이런 에러를 잡고

결국, 사용자가 알파벳을 입력하도록 유도해보자!

 

나토 파일은 아래의 게시글에서 다운로드 할 수 있다.

 

https://olivia-blackcherry.tistory.com/167

 

[26-4 파이썬] 나토 음성 문자 생성하기

전화로 레스토랑에 예약을 할 때, 예약자의 성함을 잘못 기록해, 올리비아가 아니라 알리비아라고 예약된 경우가 종종 있었다. 전달 과정에서 왜곡이 일어난 것인데, 입모양을 볼 수 없는 전화

olivia-blackcherry.tistory.com

 

기본 코드

import pandas

data = pandas.read_csv("nato_phonetic_alphabet.csv")
word_dict = {row.letter:row.code for (index, row) in data.iterrows()}
print(word_dict)
word = input("알파벳을 입력하세요: ").upper()
alphabet_list = [word_dict[i] for i in list(word)]
print(alphabet_list)

 

 

1) while 구문 이용하기

import pandas

data = pandas.read_csv("nato_phonetic_alphabet.csv")
word_dict = {row.letter:row.code for (index, row) in data.iterrows()}
print(word_dict)

word= input("알파벳을 입력하세요: ").upper()
keep_going= True
while keep_going:
    try:
        alphabet_list = [word_dict[i] for i in list(word)]
    except KeyError:
        print("입력값이 올바르지 않습니다. 알파벳만 입력해주세요!")
        word = input("알파벳을 입력하세요: ").upper()
    else:
        print(alphabet_list)
        keep_going = False

 

 

2) 함수 생성하여 재귀호출 알고리즘 사용하기

import pandas

data = pandas.read_csv("nato_phonetic_alphabet.csv")
word_dict = {row.letter:row.code for (index, row) in data.iterrows()}
print(word_dict)

def generate_word():
    word = input("알파벳을 입력하세요: ").upper()
    try:
        alphabet_list = [word_dict[i] for i in list(word)]
    except KeyError:
        print("입력값이 올바르지 않습니다. 알파벳만 입력해주세요!")
        generate_word()
    else:
        print(alphabet_list)
generate_word()

 

3) json 파일에서 예외처리하기

import json

website = input("웹사이트?")
email = input("e-mail?")
password = input("password?")

data = {
    website:{
        "e-mail: ": email,
        "password: ": password
    }

}
with open("data.json", "r") as file:
    json_data = json.load(file)
    json_data.update(data)

with open("data.json", "w") as file:
    json.dump(json_data, file, indent=4)

 

- data1.json파일이 존재하지 않을 때 예외처리

import json

website = input("웹사이트?")
email = input("e-mail?")
password = input("password?")

data = {
    website:{
        "e-mail: ": email,
        "password: ": password
    }

}
try:
    file = open("data1.json", "r")
    json_data = json.load(file)

except FileNotFoundError:
    with open("data1.json", "w") as file:
        json.dump(data, file)

else:
    json_data.update(data)

    with open("data1.json", "w") as file:
        json.dump(json_data, file, indent=4)