In Python Beginner Lesson 15, we cover an address book project in detail at a beginner-friendly level. The final goal of this lesson is to connect adding, searching, saving, and loading contacts. Instead of stopping at copying code, we also check why this syntax is used and where beginners often make mistakes.
In previous projects, data stayed only while the program was running. The address book project includes file saving, so you practice a structure closer to a real program. Today’s example is small, but it becomes a basic skeleton for later automation, data analysis, and web API learning.
What You Will Learn in This Lesson
- Core topic: an address book project
- Today’s goal: connect adding, searching, saving, and loading contacts
- Practice flow: understand the concept → run the example → review the code → try an applied task
- Recommended study time: 30–50 minutes
Understand the Big Picture First

When learning an address book project, the most important thing is not memorizing grammar names. You need to understand what role this concept plays inside a real program. At the beginner stage, keep asking the following three questions.
- Where did this value come from?
- In what order does this code run?
- Where should I save the result if I want to use it again?
Look Closely at the Core Concepts
- Address book data can store names as keys and phone numbers as values.
- JSON is convenient for saving a dictionary structure to a file.
- Exception handling is needed in case a file does not exist or is broken.
- A project becomes easier when you think separately about the data structure, features, and saving method.
At first, explanations alone may feel abstract. That is why it is helpful to run the example below right away and check the concept with your own eyes.
Beginner Terms You Should Know
| Term | Simple explanation |
| JSON | A data format that saves dictionaries and lists as text |
| CRUD | Basic data features such as creating, reading, updating, and deleting contacts |
| Persistence | The property that data remains after the program ends |
Practice Setup
Create a new Python file and run the example below. Using lowercase English letters and numbers in the file name helps reduce errors. For example, save it as lesson.py or practice_01.py. After entering the code, do not change many things at once. Change it little by little while checking the result each time.
Example Code

When you handle search and saving together, you can see how dictionaries, files, and JSON connect in a real program.
import json
from pathlib import Path
FILE = Path("contacts.json")
def load_contacts():
if not FILE.exists():
return {}
with open(FILE, "r", encoding="utf-8") as f:
return json.load(f)
def save_contacts(contacts):
with open(FILE, "w", encoding="utf-8") as f:
json.dump(contacts, f, ensure_ascii=False, indent=2)
contacts = load_contacts()
contacts["Minsu"] = "010-1111-2222"
save_contacts(contacts)
print(load_contacts())
Understand the Code Line by Line
- Use a Path object to set the save-file path.
- If the file does not exist, return an empty dictionary.
- json.load() reads file contents as a dictionary.
- json.dump() saves a dictionary as a JSON file.
The important point at this stage is the “reading order” of the code. Python runs from top to bottom. Even when there are exceptional flows such as functions or conditions, beginners should first get used to the basic top-to-bottom flow.
Change Values and Check the Result
If the example code runs, now change only a very small part. Start with small changes such as one number, one string, or one variable name so errors are easier to find. After changing something, always save and run the file again.
| Part to change | What to check |
| Input value or variable value | Check how the result sentence changes. |
| Output sentence | Check whether the explanation becomes friendlier for the user. |
| Code order | Check whether changing the order causes an error or changes the result. |
Common Errors and How to Fix Them
| Error or situation | Why it happens | How to fix it |
| JSONDecodeError | This is a common beginner-stage problem. | It happens when the file contents are not in JSON format. |
| Forgotten save | This is a common beginner-stage problem. | Check whether you called save_contacts() after changing the data. |
| File path confusion | This is a common beginner-stage problem. | Depending on the run location, the file may be created in a different folder. |
When an error occurs, first look at the last line of the error message. Then check the file name and line number. Most beginner errors happen around parentheses, quotation marks, indentation, variable names, and type conversion.
Practice Problems to Try on Your Own
- Add a contact search function.
- Create a feature that edits a phone number.
- Before deleting, receive input to confirm whether the user really wants to delete.
When solving practice problems, do not look for the answer code right away. First write the input, processing, and output flow on paper. Once the flow is visible, the code becomes much easier to write.
Where Does This Connect in Real Work?
An address book project does not end with a small example. It appears again and again when organizing files in business automation, reading table data in data analysis, and handling response values in web APIs. The beginner syntax you learn now also becomes the basic language you use later with tools such as pandas, requests, and FastAPI.
A Beginner-Friendly Analogy
When you first see an address book project, syntax symbols may catch your eye first. But if you look at syntax only as symbols, you will quickly get tired. A better method is to understand it by role. The core of this lesson is to connect adding, searching, saving, and loading contacts. In other words, you are practicing how to decide what job to give Python and write the order of that job as code.
Think of a cooking recipe. You prepare ingredients, handle them in order, control the heat, and finally serve the dish. Python code is similar. You prepare the needed values, process them in a defined order, and print or save the result. For beginners, building this sense of order is the most important part.
Follow the Execution Flow Visually
Before running code, think in the following three boxes. This habit helps not only with simple examples but also later when you build longer projects.
| Section | Question to check | Meaning in this lesson |
| Input | What value does the program receive first? | Values the user enters or values written in advance in the an address book project example. |
| Processing | What calculation or decision happens? | The part Python runs in order to achieve the goal: connect adding, searching, saving, and loading contacts. |
| Output | What result does the user check? | This may be a print result, saved file, created graph, or changed data. |
Simply filling in this table yourself improves code comprehension. Beginners struggle partly because they do not know syntax, but more often because they cannot separate input, processing, and output flow.
Debugging Routine: What to Check When an Error Happens
When an error appears, do not delete code at random. If you check in the order below, you can find most beginner errors yourself.
- Read the last line of the error message.
- Check the file name and line number.
- On that line, check parentheses, quotation marks, colons, and commas.
- Check whether the variable name exactly matches the name defined above.
- Check whether a value that should be calculated as a number is still a string.
- Undo the part you just changed and run the code again.
If you repeat this routine, errors begin to look like clues instead of something scary. Python skill grows more from reading and fixing errors than from avoiding them completely.
Application Ideas: Grow Today’s Lesson a Little
Once this example feels familiar, keep the an address book project example and change one thing: an input value, an output sentence, a saving method, or a repeat count. You do not need to make a completely new example. At the beginner stage, many small variations are the best practice.
- Change variable names in the example to make them more meaningful.
- Refine output sentences so they read like guidance shown to a real user.
- Deliberately check what happens when invalid input is entered.
- Explain the code with comments to check your own understanding.
- Try making the same result in a slightly different way.
Lesson Checkpoints
- ☐ I can explain in words why an address book project is needed.
- ☐ I ran the example code myself.
- ☐ I can explain the role of at least three lines of code.
- ☐ When an error occurred, I checked the last line and the line number.
- ☐ I changed and ran at least one practice problem on my own.
Related Articles
- Python Beginner 20-Lesson Complete Guide
- Previous lesson: Python Beginner Lesson 14: Understand Classes and Objects Easily
- Next lesson: Python Beginner Lesson 16: Work with Dates, Paths, and Patterns Using the Standard Library
- Business automation article collection
FAQ
Can I follow Python address book even if I am completely new to Python?
Yes. This lesson is written for readers who are learning programming for the first time. Focus on understanding the execution result and flow rather than memorizing the code.
I followed the example exactly, but I get an error. What should I check first?
Check parentheses, quotation marks, colons, indentation, and variable names first. Many beginner errors happen because quotation marks were entered strangely or a variable name differs by one character.
The example code looks too short. Should I study longer code?
At the beginner level, short code is better. The most stable way to improve is to understand short code accurately, then change values and add features one by one.
What should I do next?
Change and run at least one practice problem from this lesson. Then move to the next lesson, where the concepts you learned earlier will appear again naturally.
Next Lesson Preview
The next lesson is Python Beginner Lesson 16: Work with Dates, Paths, and Patterns Using the Standard Library. Based on the flow you practiced here, you will explore the standard library in more detail.
References
- Python Official Tutorial
- Python Official Tutorial: Control Flow Tools
- Python Official Tutorial: Data Structures
- Python Official Tutorial: Modules
- Python Official Tutorial: Input and Output
Original Korean article: https://www.thinknote.co.kr/python-beginner-15-address-book-project/