A notebook-driven Python journey for beginners who want to grow from curious learners into confident builders.
Learn slowly. Practice deeply. Write clean code. Build real confidence.
This repository is not meant to be a pile of random Python snippets. It is meant to feel like a guided adventure.
Inside these notebooks, students move from:
- printing their first line of Python
- to organizing data with collections
- to making decisions with conditions and loops
- to designing reusable functions
- to building object-oriented programs
- to testing their own code like real developers
The goal is not just to “finish Python.” The goal is to think clearly, code professionally, and keep leveling up.
These lessons were shaped to be:
- Gradual — each notebook starts simple and grows carefully
- Connected — older topics return in newer lessons so they stay alive
- Readable — code examples favor clarity, naming, and structure
- Practical — examples are grounded, reusable, and beginner-safe
- Encouraging — the tone aims to motivate without watering things down
week_1/0001_python_basics.ipynbweek_2/0002_collections.ipynbweek_3/0003_ifelifelse.ipynbweek_3/0003_truthyandfalsies.ipynbweek_3/0003_Loops.ipynbweek_4/0004_Functions.ipynbweek_5/0005 recursion.ipynbweek_6/try_except.ipynb
week_7/0007 Objects and Classes.ipynbweek_8/0008 Inheritance Basics.ipynbweek_9/association.ipynbweek_9/aggregation.ipynbweek_9/composition.ipynbweek_9/mixin..ipynbweek_x/encapsulation.ipynbweek_x/polymorphism.ipynbweek_x/abstraction.ipynb
week_x2/unit_test.ipynbpython_techniques.ipynb
For each notebook:
- read the markdown sections first
- run every code cell in order
- change at least one value in every major example
- predict the output before running the next cell
- write one tiny variation of your own before moving on
That is how you stop being a passive reader and start becoming a programmer.
To help students build problem-solving stamina—not just topic familiarity—the repository now includes a dedicated practice notebook for each week grouping. These are designed for review, exam preparation, debugging practice, and job-style thinking.
week_1/0001_practice_python_basics.ipynbweek_2/0002_practice_collections.ipynbweek_3/0003_practice_control_flow.ipynbweek_4/0004_practice_functions.ipynbweek_5/0005_practice_recursion.ipynbweek_6/0006_practice_exceptions.ipynbweek_7/0007_practice_oop_basics.ipynbweek_8/0008_practice_inheritance.ipynbweek_9/0009_practice_relationships.ipynbweek_x/0010_practice_oop_design.ipynbweek_x2/0011_practice_unit_testing.ipynb
A good rhythm is to finish the lesson notebook first, then immediately attempt the matching practice notebook while the ideas are still fresh.
- Jupyter Notebook
- JupyterLab
- VS Code with the Jupyter extension
- Google Colab after uploading the files
Recommended Python version: Python 3.9+
By working through the notebooks in order, learners should become much more comfortable with:
- reading Python code
- explaining what code is doing
- writing clean beginner-to-intermediate solutions
- spotting patterns worth turning into functions or classes
- testing ideas instead of guessing
- thinking like someone who can build projects, not just copy syntax
You do not need to rush to become strong at Python.
You need repetition, curiosity, clean habits, and enough courage to keep editing your code when it does not work the first time.
If you stick with that, you will not just “learn Python.” You will build the mindset of a real programmer.
