20230317 kdt 시험
2023. 3. 20. 17:13ㆍ학습일지
728x90
import pickle # 전화번호부 데이터 저장을 위한 모듈
# 전화번호부 클래스
class Phonebook:
def __init__(self):
self.comtacts= [] # 전화번호부 리스트 생성
# 새로운 연락처 추가
def add_contact(self,name,phone,address,email,group):
self.contacts.append({'name':name,'phone':phone,'address':address,'mail':mail,'group':group})
# 연락처 출처
def print_contacts(self):
if len(self.contacts) ==0:
print('저장된 연락처가 없습니다.')
else:
sorted_contacts = sorted(self.contacts, key=lambda c: c['name']) # 이름으로 정렬
for contact in sorted_contacts:
print('='*30)
print(f"이름:{contact['name']}")
print(f"전화번호:{contact['phone']}")
print(f"주소{contact['address']}")
print(f"메일:{contact['mail']}")
print(f"그룹:{contact['group']}")
print('='*30)
# 전화번호 검색
def search_contacts(self,keyword):
result = []
for contact in self.contacts:
if keyword in contact["name"] or keyword in contact["mail"] or keyword in contact["group"]:
results.append(contact)
if len(results)==0:
print('검색 결과가 없습니다.')
else:
sorted_results = sorted(results, key=lambda c: c['name']) # 이름으로정렬
for contact in sorted_results:
print('='*30)
print(f"이름:{contact['name']}")
print(f"전화번호:{contact['phone']}")
print(f"주소:{contact['address']}")
print(f"이메일:{contact['mail']}")
print(f"그룹:{contact['group']}")
print('='*30)
# 전화번호 삭제
def delete_contact(self,phone):
for contact in self.contacts:
if contact["phone"] == phone:
self.contacts.remove(contact)
print('삭제되었습니다.')
return
print("해당 전화번호를 찾을 수 없습니다.")
# 전화번호부 데이터 저장
def save_phonebook(self):
with open('phonebook.pickle'"w") as f:
pickle.dump(self.contacts, f)
print("데이터가 저장되었습니다.")
#전화번호부 데이터 불러오기
def load_phonebook(self):
try:
with open('phonebook.pickle','rb') as f:
self.contacts = pickle.load(f)
print('저장된 데이터가 없습니다.')
except FileNotFoundError:
print('저장된 데이터가 없습니다.')
except:
print('데이터를 불러오는 중 오류가 발생하였습니다.')
def main():
# 전화번호부 객체 생성
phonebook = Phonebook()
phonebook.load_contacts()
while True:
# 메뉴 출력
print('1. 연락처 추가')
print('2. 연락처 출력')
print('3. 연락처 검색')
print('4. 연락처 삭제')
print('5. 종료')
try:
choice = int(input("1-6번까지 고르시오::"))
if choice == 1:
phonebook.add_contact()
elif choice == 2:
phonebook.print_contacts()
elif choice == 3:
phonebook.search_contacts()
elif choice == 4:
phonebook.delete_contact()
elif choice == 5:
phonebook.save_contacts
except:
print('데이터를 불러오는 중 오류가 발생하였습니다.')
이번 시험은 뭔가 이상했다.
처음에는 입출력이 성공했지만 다시 한번 돌리니 실패했다.
어디가 틀린건지 몰라 그냥 냈다.
나중에 시험볼때는 끝까지 물고 늘어져봐야되겠다.
역시 코딩의 세계는 알다가도 모르겠다.
728x90
반응형
'학습일지' 카테고리의 다른 글
20230322 KDT 학습일지 (0) | 2023.03.22 |
---|---|
20230321 kdt 수업일지 (0) | 2023.03.21 |
20230320 kdt 학습일지 (0) | 2023.03.20 |
20230316 kdt 수업일지 (0) | 2023.03.16 |
20230315 kdt 학습일지 (0) | 2023.03.15 |