2023. 9. 13. 18:39ㆍDATA PROGRAMMING/PYTHON
지난 글에서 class에 대해 공부한 내용을 토대로 전화번호부를 만들어 보려고 한다.
파이썬 CLASS 기능을 통해서 전화번호부 만들기
1. 전화번호부 클래스 만들기
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: ")
print(name, phone_number, e_mail, addr)
전화번호부 역할을 하는 Contact라는 클래스의 기본적인 뼈대를 정의했다. 여기엔 print_info라는 메서드가 존재하는데 이는 저장된 전화번호 정보를 출력하는 메서드이다. 클래스 외부에 정의된 함수 set_contact는 직점 이름, 전화번호, 이메일, 주소 등을 입력하는 역할을 하는 함수다.
def run():
set_contact()
if __name__ == "__main__":
run()
run()함수를 통해 set_contact 함수를 불러올수 있다.
set_contact 함수는 전화번호부 정보를 입력하는 역할을 하는 함수로 사용자가 직접 입력 가능하다.
2. 메인메뉴 만들기
def print_menu():
print("1. 연락처 입력")
print("2. 연락처 출력")
print("3. 연락처 삭제")
print("4. 종료")
menu = input("메뉴선택: ")
return int(menu)
def run():
while 1:
menu = print_menu()
if menu == 4:
break
if __name__ == "__main__":
run()
메인메뉴는 연락처를 입력할지 출력할지 삭제할지를 정해주는 역할을 한다. 이를 print_menu()로 정의했으며, run()함수에 while문을 사용하여 각 번호를 입력하면 해당 메뉴가 실행되며 4를 선택할시에 메뉴선택이 종료된다.
3. 연락처 입력기능 작동시키기
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
set_contact함수를 다음과같이 수정하여 입력한 결과를 contact 클래스에 입력할수 있도록 한다.
이제 앞서 만들었던 run함수를 통해 1번 메뉴를 선택했을때, set_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_menu():
print("1. 연락처 입력")
print("2. 연락처 출력")
print("3. 연락처 삭제")
print("4. 종료")
menu = input("메뉴선택: ")
return int(menu)
def run():
contact_list = []
while 1:
menu = print_menu()
if menu == 1:
contact = set_contact()
contact_list.append(contact)
elif menu == 4:
break
if __name__ == "__main__":
run()
지금까지의 전체적인 코드는 이렇게 작성된다.
4. 연락처 출력하기, 연락처 삭제하기 기능 추가
우선 연락처를 출력하는 기능부터 만들어보자.
def print_contact(contact_list):
for contact in contact_list:
contact.print_info()
contact_list라는 많은 연락처들중 contact라는 클래스 불러온다. 이때 print_info메서드를 사용한다. 또한 이 기능을 위해 여러 연락처를 저장할수 있도록 run함수에 contact_list를 만들어 주고, 2번 기능(연락처 출력)을 print_contact함수와 연결한다.
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 == 4:
break
마찬가지로 연락처를 삭제하는 함수까지 정의해서 run()함수의 3번 메뉴에 연결해 준다
def delete_contact(contact_list, name):
for i, contact in enumerate(contact_list):
if contact.name == name:
del contact_list[i]
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:
break
여기까지 파이썬의 클래스 기능을 활용하여 전화번호부 기능을하는 프로그램을 만들수 있었다. 이에 더해 파일 기능을 통해 입력한 연락처 정보를 파일 형태로 저장할수도 있다.
'DATA PROGRAMMING > PYTHON' 카테고리의 다른 글
파이썬을 이용한 퀀트 투자 - 1. 시작과 맛보기 (0) | 2023.09.17 |
---|---|
파이썬으로 엑셀 사용하기 (0) | 2023.09.14 |
[Python] Class의 정확한 이해와 사용법 (0) | 2023.09.13 |
파이썬 NUMPY 이미지 파일 색깔 수정하 (0) | 2023.08.03 |
[파이썬] 클래스가 불균형한 데이터 머신러닝 분류 모델 실습 (0) | 2023.06.04 |