[Python]전화번호부 만들기
파이썬을 이용하여 전화번호부를 만들어보자.(코드가 지저분하여 리팩토링을 해야하는데 언제할진 모르겠음)
import json file_path = "../source/45-1.json" def read_file(): try: with open(file_path, 'r') as f: json_string = f.read().replace("'", '"') result = json.loads(json_string) return result.values() except: with open(file_path, "w") as f: f.write("") return list() def show_phones(): phones = read_file() for phone in phones: print(f"Name = {phone.get('Name')}, Phone = {phone.get('Phone')}") def write_file(data): with open(file_path, 'w') as f: json.dump(data, f) while True: print() print("=====================") print("1. 전화번호 조회") print("2. 전화번호 추가") print("3. 전화번호 삭제") print("4. 종료하기") print("=====================") menu = input("메뉴를 선택하세요 : ") if menu == "1": print() show_phones() elif menu == "2": print() name = input("추가할 이름을 입력하세요 : ") phone = "" while True: phone = input("추가할 전화번호를 입력하세요 : ") if not all([i.isdigit() for i in phone]): print("전화번호는 숫자만 입력할 수 있습니다.") continue if len(phone) < 8: print("전화번호는 최소 8자리 이상 입력해야 합니다.") continue break data = {"Name": name, "Phone": phone} phones = list(read_file()) phones.append(data) write_file(dict(enumerate(phones))) elif menu == "3": print() name = input("삭제할 이름을 입력하세요 : ") phones = list(read_file()) if not any([ p.get('Name') == name for p in phones]): print(f"존재하지 않는 이름입니다. = {name}") continue for phone in phones: if phone.get('Name') == name: phones.remove(phone) write_file(dict(enumerate(phones))) break elif menu == "4": print("프로그램을 종료합니다.") break ## 결과 ===================== 1. 전화번호 조회 2. 전화번호 추가 3. 전화번호 삭제 4. 종료하기 ===================== 메뉴를 선택하세요 : 1 Name = bbbb, Phone = 1111222233 Name = cccc, Phone = 111123123 ===================== 1. 전화번호 조회 2. 전화번호 추가 3. 전화번호 삭제 4. 종료하기 ===================== 메뉴를 선택하세요 : 2 추가할 이름을 입력하세요 : abc 추가할 전화번호를 입력하세요 : 1234 전화번호는 최소 8자리 이상 입력해야 합니다. 추가할 전화번호를 입력하세요 : 12345678 ===================== 1. 전화번호 조회 2. 전화번호 추가 3. 전화번호 삭제 4. 종료하기 ===================== 메뉴를 선택하세요 : 1 Name = bbbb, Phone = 1111222233 Name = cccc, Phone = 111123123 Name = abc, Phone = 12345678 ===================== 1. 전화번호 조회 2. 전화번호 추가 3. 전화번호 삭제 4. 종료하기 ===================== 메뉴를 선택하세요 : 3 삭제할 이름을 입력하세요 : abc ===================== 1. 전화번호 조회 2. 전화번호 추가 3. 전화번호 삭제 4. 종료하기 ===================== 메뉴를 선택하세요 : 1 Name = bbbb, Phone = 1111222233 Name = cccc, Phone = 111123123 ===================== 1. 전화번호 조회 2. 전화번호 추가 3. 전화번호 삭제 4. 종료하기 ===================== 메뉴를 선택하세요 : 4 프로그램을 종료합니다.
최신 댓글