Python
주소록 프로젝트
IT_달토끼
2023. 3. 25. 17:43
요즘 cs 및 sql 공부를 하느라 파이썬 코드를 통 작성하지 못 했다.
이러다 파이썬을 잊어 먹겠다 싶은 마음에 작성해본 코드.
아래 책에 나오는 실전 프로젝트를 보고 주소록 프로젝트를 따라 만들었다.
참고로, 해당 책에서 저자 분이 코드 한줄 한줄 자세히 설명해주셔서 좋았다.
나같은 초보자들이 보기에 좋은 교재인 것 같다 :)
아래는 완성코드!
class Contact():
def __init__(self, name, phone_number, e_mail, addr):
self.name = name
self.phone_number = phone_number
self.e_mail = e_mail
self.addr = addr
def print_info(self):
print('Name:', self.name)
print('Phone Number:', self.phone_number)
print('E-mail:', self.e_mail)
print('Address:', self.addr)
def set_contact():
name = input('Name: ')
phone_number = input('Phone_number: ')
e_mail = input('E-mail: ')
addr = input('Address: ')
contact = Contact(name, phone_number, e_mail, addr)
return contact
def print_contact(contact_list):
for contact in contact_list:
contact.print_info()
def delete_contact(contact_list, name):
for i, contact in enumerate(contact_list):
if contact.name == name:
del contact_list[i]
def store_contact(contact_list):
f = open('contact_db.txt', 'wt')
for contact in contact_list:
f.write(contact.name + '\n')
f.write(contact.phone_number + '\n')
f.write(contact.e_mail + '\n')
f.write(contact.addr + '\n')
f.close()
def load_contact(contact_list):
f = open('contact_db.txt', 'rt')
lines = f.readlines()
num = len(lines)/4
num = int(num)
for i in range(num):
name = lines[4*i].rstrip('\n')
phone = lines[4*i+1].rstrip('\n')
email = lines[4*i+2].rstrip('\n')
addr = lines[4*i+3].rstrip('\n')
contact = Contact(name, phone, email, addr)
contact_list.append(contact)
f.close()
def print_menu():
print('1. 연락처 입력')
print('2. 연락처 출력')
print('3. 연락처 삭제')
print('4. 종료')
menu = input('메뉴선택: ')
return int(menu)
def run():
contact_list = []
load_contact(contact_list)
while 1:
menu = print_menu()
if menu == 1:
contact = set_contact()
contact_list.append(contact)
elif menu == 2:
print_contact(contact_list)
elif menu == 3:
name = input('Name: ')
delete_contact(contact_list, name)
elif menu == 4:
store_contact(contact_list)
break
if __name__ == '__main__':
run()
터미널에서 실행하면, 다음 화면처럼 나온다.