본문 바로가기

강의/Python 기초

Chapter 7. 전화번호부 프로그램 만들기

반응형

📞 전화번호부 프로그램이란?

전화번호부 프로그램은 친구와 가족의 이름, 전화번호를 저장하고 관리하는 프로그램입니다.

우리가 스마트폰 연락처 앱을 사용하는 것처럼 파이썬으로도 간단한 전화번호부를 만들 수 있습니다.

이번 프로젝트에서는 단순 저장뿐 아니라 실제 연락처 앱처럼 여러 기능을 만들어 봅니다.


📚 이번 시간에 배우는 내용

  • 연락처 등록
  • 연락처 검색
  • 연락처 수정
  • 연락처 삭제
  • 연락처 파일 저장
  • 연락처 파일 불러오기

🤔 왜 전화번호부가 필요할까요?

친구가 많아지면 전화번호를 모두 외우기 어렵습니다.

전화번호부 프로그램에 저장해 두면 언제든지 쉽게 찾을 수 있습니다.

예시

  • 철수 : 010-1234-5678
  • 영희 : 010-9876-5432
  • 민수 : 010-1111-2222

1️⃣ 연락처 등록하기

사용자가 이름과 전화번호를 입력하면 전화번호부에 저장합니다.

phone_book = {}

name = input("이름 : ")
phone = input("전화번호 : ")

phone_book[name] = phone

print("저장 완료!")

실행 결과

이름 : 철수
전화번호 : 010-1234-5678

저장 완료!

2️⃣ 연락처 검색하기

이름을 입력하면 저장된 전화번호를 찾을 수 있습니다.

search_name = input("검색할 이름 : ")

if search_name in phone_book:
    print(phone_book[search_name])
else:
    print("연락처가 없습니다.")

실행 결과

검색할 이름 : 철수

010-1234-5678

3️⃣ 연락처 수정하기

전화번호가 바뀌었을 때 수정할 수 있습니다.

name = input("수정할 이름 : ")

if name in phone_book:
    new_phone = input("새 전화번호 : ")
    phone_book[name] = new_phone
    print("수정 완료!")
else:
    print("연락처가 없습니다.")

실행 결과

수정할 이름 : 철수
새 전화번호 : 010-9999-9999

수정 완료!

4️⃣ 연락처 삭제하기

필요 없는 연락처를 삭제할 수 있습니다.

name = input("삭제할 이름 : ")

if name in phone_book:
    del phone_book[name]
    print("삭제 완료!")
else:
    print("연락처가 없습니다.")

실행 결과

삭제할 이름 : 철수

삭제 완료!

5️⃣ 연락처 파일 저장하기

프로그램을 종료해도 연락처가 사라지지 않도록 파일에 저장할 수 있습니다.

with open("phonebook.txt", "w", encoding="utf-8") as file:
    for name, phone in phone_book.items():
        file.write(f"{name},{phone}\n")

print("파일 저장 완료!")

생성 예시

철수,010-1234-5678
영희,010-9876-5432
민수,010-1111-2222

6️⃣ 연락처 파일 불러오기

저장된 연락처를 다시 읽어올 수 있습니다.

phone_book = {}

with open("phonebook.txt", "r", encoding="utf-8") as file:
    for line in file:
        name, phone = line.strip().split(",")
        phone_book[name] = phone

print(phone_book)

실행 결과

{
'철수': '010-1234-5678',
'영희': '010-9876-5432',
'민수': '010-1111-2222'
}

🎯 이번 프로젝트에서 배운 것

이번 프로젝트를 통해 다음 기능을 모두 만들어 보았습니다.

✅ 연락처 등록

✅ 연락처 검색

✅ 연락처 수정

✅ 연락처 삭제

✅ 파일 저장

✅ 파일 불러오기


🚀 전화번호부 프로그램 전체 소스

phone_book = {}

# 파일 불러오기
try:
    with open("phonebook.txt", "r", encoding="utf-8") as file:
        for line in file:
            name, phone = line.strip().split(",")
            phone_book[name] = phone
except FileNotFoundError:
    pass


while True:
    print("\n=== 전화번호부 프로그램 ===")
    print("1. 연락처 등록")
    print("2. 연락처 검색")
    print("3. 연락처 수정")
    print("4. 연락처 삭제")
    print("5. 연락처 목록 보기")
    print("6. 파일 저장")
    print("0. 종료")

    menu = input("메뉴 선택 : ")

    if menu == "1":
        name = input("이름 : ")
        phone = input("전화번호 : ")
        phone_book[name] = phone
        print("연락처가 등록되었습니다.")

    elif menu == "2":
        name = input("검색할 이름 : ")

        if name in phone_book:
            print(name, ":", phone_book[name])
        else:
            print("연락처가 없습니다.")

    elif menu == "3":
        name = input("수정할 이름 : ")

        if name in phone_book:
            phone = input("새 전화번호 : ")
            phone_book[name] = phone
            print("연락처가 수정되었습니다.")
        else:
            print("연락처가 없습니다.")

    elif menu == "4":
        name = input("삭제할 이름 : ")

        if name in phone_book:
            del phone_book[name]
            print("연락처가 삭제되었습니다.")
        else:
            print("연락처가 없습니다.")

    elif menu == "5":
        print("\n--- 연락처 목록 ---")

        if len(phone_book) == 0:
            print("저장된 연락처가 없습니다.")
        else:
            for name, phone in phone_book.items():
                print(name, ":", phone)

    elif menu == "6":
        with open("phonebook.txt", "w", encoding="utf-8") as file:
            for name, phone in phone_book.items():
                file.write(name + "," + phone + "\n")

        print("파일 저장 완료!")

    elif menu == "0":
        with open("phonebook.txt", "w", encoding="utf-8") as file:
            for name, phone in phone_book.items():
                file.write(name + "," + phone + "\n")

        print("전화번호부를 저장하고 종료합니다.")
        break

    else:
        print("잘못된 메뉴입니다.")

전화번호부 프로그램

반응형