티스토리 뷰
실전 프로젝트로 PyCharm을 이용한 주소록 프로젝트 샘플 코드를 설명하겠습니다. 간단하게만 작성했습니다.
● 주소록 프로젝트
기능: 연락처 입출력 및 삭제, 종료 시 파일로 저장
△ 연락처 저장 함수
- Contact 클래스: 클래스 인스턴스를 생성할 때 이름, 전화번호, 이메일, 주소를 입력받을 수 있게 생성자를 선언하고 인스턴스 변수에 저장된 정보를 화면에 출력하기 위해 print_info라는 메서드도 정의
- set_contact: 입력한 항목들을 저장
- print_contact: 현재 리스트에 있는 연락처 출력
- delete_contact: name 입력을 받아 해당 name을 가진 연락처 삭제
- print_menu: 선택할 수 있는 메뉴를 제시
- store_contact: 연락처를 contact_db.txt 파일에 저장
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 print_menu():
print("1. 연락처 입력")
print("2. 연락처 출력")
print("3. 연락처 삭제")
print("4. 종료")
menu = input("메뉴선택: ")
return int(menu)
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 run():
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()
△ 연락처 불러들이기
위에 있는 소스코드와 동일하지만, 실행 시 연락처를 불러오는 load_contact 함수가 추가되었습니다.
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 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 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 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()
'IT > Algorithm Trading' 카테고리의 다른 글
3) 키움증권 API 및 PyQt 기초 (0) | 2020.05.15 |
---|---|
1) 알고리즘 트레이딩 및 파이썬 기초 (0) | 2020.05.06 |
Introduction of Algorithm Trading (알고리즘 트레이딩) (0) | 2020.04.17 |
댓글