Author: Luo Hao
Note: If GitHub access is slow, you can follow my Zhihu account (Python-Jack). The "Learn Python from Scratch" column (corresponding to the first 20 days of this project) is suitable for beginners. Other columns such as "Data Thinking and Statistical Thinking", "Python-Based Data Analysis", "An AI Journey" are also being continuously updated. Feel free to follow, like, and comment. The free QQ discussion groups are currently full, and it's impossible to reply to every message due to the volume. If you'd like to join a study group or need paid consultation, you can join the paid discussion group. New users can pay via the QR code below and then add my personal WeChat (WeChat ID: jackfrued) to be invited to the paid study group. Please include your name and needs when adding me on WeChat, and I'll provide whatever help I can.
![]()
Some videos corresponding to this project have been uploaded to Bilibili. Feel free to like, tip, and subscribe!
Simply put, Python is an "elegant," "explicit," and "simple" programming language.
- Low learning curve, accessible even to non-professionals
- Open source, with a powerful ecosystem
- Interpreted language, perfect platform portability
- Dynamically typed language, supports object-oriented and functional programming
- High code standardization, strong readability
Python is used in the following fields:
- Backend Development - Python / Java / Go / PHP
- DevOps - Python / Shell / Ruby
- Data Collection - Python / C++ / Java
- Quantitative Trading - Python / C++ / R
- Data Science - Python / R / Julia / Matlab
- Machine Learning - Python / R / C++ / Julia
- Automated Testing - Python / Shell
As a Python developer, there are many career paths to choose from based on personal interests and career planning:
- Python Backend Developer (servers, cloud platforms, data APIs)
- Python DevOps Engineer (automation, SRE, DevOps)
- Python Data Analyst (data analysis, business intelligence, digital operations)
- Python Data Scientist (machine learning, deep learning, algorithm specialist)
- Python Web Scraping Engineer (not recommended!!!)
- Python Test Engineer (automated testing, test development)
Note: Currently, data science is a very popular direction, because both internet companies and traditional industries have accumulated massive amounts of data. Every industry needs data scientists to discover more business value from existing data, thereby providing data-driven support for corporate decision-making.
A few tips for beginners:
- Make English as your working language.
- Practice makes perfect.
- All experience comes from the mistakes you've made.
- Don't be a freeloader. (Learn to share)
- Embrace AI, improve efficiency
Day01 - Introduction to Python
- Introduction to Python
- Python Timeline
- Python Pros and Cons
- Python Application Areas
- Installing the Python Environment
- Windows Environment
- macOS Environment
Day02 - Your First Python Program
- Tools for Writing Code
- Hello World
- Commenting Your Code
Day03 - Variables in Python
- Some Basics
- Variables and Types
- Variable Naming
- Using Variables
Day04 - Operators in Python
- Arithmetic Operators
- Assignment Operators
- Comparison Operators and Logical Operators
- Operators and Expressions in Practice
- Fahrenheit and Celsius Conversion
- Calculate Circle Circumference and Area
- Determine Leap Year
Day05 - Branching Structures
- Building Branching Structures with if and else
- Building Branching Structures with match and case
- Applications of Branching Structures
- Piecewise Function Evaluation
- Converting Percentage Scores to Letter Grades
- Calculate Triangle Perimeter and Area
Day06 - Loop Structures
- for-in Loops
- while Loops
- break and continue
- Nested Loop Structures
- Applications of Loop Structures
- Determine Prime Numbers
- Greatest Common Divisor
- Number Guessing Game
- Example 1: Primes Under 100
- Example 2: Fibonacci Sequence
- Example 3: Finding Narcissistic Numbers
- Example 4: Hundred Money Hundred Chickens Problem
- Example 5: CRAPS Gambling Game
- Creating Lists
- List Operations
- Iterating Over Elements
- List Methods
- Adding and Removing Elements
- Element Position and Frequency
- Element Sorting and Reversing
- List Comprehensions
- Nested Lists
- List Applications
Day10 - Common Data Structures: Tuples
- Tuple Definition and Operations
- Packing and Unpacking
- Swapping Variable Values
- Comparing Tuples and Lists
Day11 - Common Data Structures: Strings
- String Definition
- Escape Characters
- Raw Strings
- Special Character Representations
- String Operations
- Concatenation and Repetition
- Comparison Operations
- Membership Operations
- Getting String Length
- Indexing and Slicing
- Iterating Over Characters
- String Methods
- Case-Related Operations
- Search Operations
- Property Checks
- Formatting
- Trimming Operations
- Replacement Operations
- Splitting and Joining
- Encoding and Decoding
- Other Methods
Day12 - Common Data Structures: Sets
- Creating Sets
- Iterating Over Elements
- Set Operations
- Membership Operations
- Binary Operations
- Comparison Operations
- Set Methods
- Frozen Sets
- Creating and Using Dictionaries
- Dictionary Operations
- Dictionary Methods
- Dictionary Applications
Day14 - Functions and Modules
- Defining Functions
- Function Parameters
- Positional and Keyword Arguments
- Default Parameter Values
- Variable Arguments
- Managing Functions with Modules
- Modules and Functions from the Standard Library
Day15 - Functions in Practice
- Example 1: Random Verification Code
- Example 2: Determine Prime Numbers
- Example 3: GCD and LCM
- Example 4: Data Statistics
- Example 5: Random Lottery Number Generator
Day16 - Advanced Function Usage
- Higher-Order Functions
- Lambda Functions
- Partial Functions
Day17 - Advanced Function Applications
- Decorators
- Recursive Calls
Day18 - Introduction to OOP
- Classes and Objects
- Defining Classes
- Creating and Using Objects
- The init Method
- Pillars of Object-Oriented Programming
- OOP Examples
- Example 1: Digital Clock
- Example 2: Point on a Plane
Day19 - Advanced OOP
- Visibility and Property Decorators
- Dynamic Attributes
- Static Methods and Class Methods
- Inheritance and Polymorphism
Day20 - OOP in Practice
- Poker Game
- Salary Settlement System
Day21 - File I/O and Exception Handling
- Opening and Closing Files
- Reading and Writing Text Files
- Exception Handling Mechanisms
- Context Manager Syntax
- Reading and Writing Binary Files
- JSON Overview
- Reading and Writing JSON Data
- Package Manager pip
- Fetching Data with Web APIs
Day23 - Reading and Writing CSV Files
- Introduction to CSV Files
- Writing Data to CSV Files
- Reading Data from CSV Files
- Introduction to Excel
- Reading Excel Files
- Writing Excel Files
- Adjusting Styles
- Formula Calculations
- Introduction to Excel
- Reading Excel Files
- Writing Excel Files
- Adjusting Styles
- Generating Charts
Day26 - Working with Word and PowerPoint
- Working with Word Documents
- Generating PowerPoint Presentations
Day27 - Working with PDF Files
- Extracting Text from PDFs
- Rotating and Overlaying Pages
- Encrypting PDF Files
- Batch Adding Watermarks
- Creating PDF Files
Day28 - Image Processing with Python
- Basic Knowledge
- Processing Images with Pillow
- Drawing with Pillow
Day29 - Sending Emails and SMS
- Sending Emails
- Sending SMS
Day30 - Regular Expressions
- Regular Expression Fundamentals
- Python's Support for Regular Expressions
- Example 1: Input Validation
- Example 2: Content Extraction
- Example 3: Content Replacement
- Example 4: Sentence Splitting
- Key Concepts
- Data Structures and Algorithms
- Function Usage Patterns
- Object-Oriented Programming Topics
- Iterators and Generators
- Concurrent Programming
- Using HTML Tags for Page Content
- Styling Pages with CSS
- Handling Interactive Behavior with JavaScript
- Getting Started with Vue.js
- Using Element UI
- Using Bootstrap
- OS History and Linux Overview
- Basic Linux Commands
- Useful Linux Utilities
- The Linux File System
- Using the Vim Editor
- Environment Variables and Shell Programming
- Software Installation and Service Configuration
- Network Access and Management
- Other Related Topics
- Relational Database Overview
- Introduction to MySQL
- Installing MySQL
- Basic MySQL Commands
Day37 - SQL in Detail: DDL
- Creating Databases and Tables
- Dropping and Altering Tables
Day38 - SQL in Detail: DML
- INSERT Operations
- DELETE Operations
- UPDATE Operations
Day39 - SQL in Detail: DQL
- Projection and Aliases
- Filtering Data
- Handling NULL Values
- Deduplication
- Sorting
- Aggregate Functions
- Subqueries
- GROUP BY Operations
- Table Joins
- Cartesian Product
- Inner Join
- Natural Join
- Outer Join
- Window Functions
- Defining Windows
- Ranking Functions
- Value Functions
Day40 - SQL in Detail: DCL
- Creating Users
- Granting Privileges
- Revoking Privileges
Day41 - MySQL New Features
- JSON Type
- Window Functions
- Common Table Expressions
Day42 - Views, Functions, and Procedures
- Views
- Use Cases
- Creating Views
- Limitations
- Functions
- Built-in Functions
- User-Defined Functions (UDF)
- Stored Procedures
- Creating Procedures
- Calling Procedures
Day43 - Indexes
- Execution Plans
- How Indexes Work
- Creating Indexes
- Regular Indexes
- Unique Indexes
- Prefix Indexes
- Composite Indexes
- Important Notes
Day44 - Connecting Python to MySQL
- Installing Third-Party Libraries
- Creating a Connection
- Getting a Cursor
- Executing SQL Statements
- Fetching Data via Cursor
- Transaction Commit and Rollback
- Releasing the Connection
- Writing ETL Scripts
Day45 - Hive in Practice
- Hive Overview
- Environment Setup
- Common Commands
- Basic Syntax
- Creating Tables
- Inserting Data
- Common Functions
- Group Aggregation
- Sampling
- Sorting
- Lateral View
- Performance Optimization
Day46 - Getting Started with Django
- How Web Applications Work
- HTTP Requests and Responses
- Django Framework Overview
- Quick Start in 5 Minutes
Day47 - Deep Dive into Models
- Relational Database Configuration
- CRUD Operations with ORM
- Using the Admin Panel
- Django Model Best Practices
- Model Definition Reference
- Loading Static Resources
- Ajax Overview
- Implementing Voting with Ajax
Day49 - Cookies and Sessions
- Implementing User Tracking
- The Relationship Between Cookies and Sessions
- Django's Session Support
- Reading and Writing Cookies in View Functions
Day50 - Creating Reports
- Modifying Response Headers via
HttpResponse - Handling Large Files with
StreamingHttpResponse - Generating Excel Reports with
xlwt - Generating PDF Reports with
reportlab - Generating Frontend Charts with ECharts
Day51 - Logging and Debug Toolbar
- Configuring Logging
- Configuring Django-Debug-Toolbar
- Optimizing ORM Code
Day52 - Middleware
- What is Middleware
- Django's Built-in Middleware
- Custom Middleware and Use Cases
- Returning JSON Data
- Rendering Pages with Vue.js
- REST Overview
- Getting Started with DRF
- Frontend-Backend Separation Development
- JWT Applications
- Using CBV
- Data Pagination
- Data Filtering
Day56 - Using Cache
- The First Law of Website Optimization
- Using Redis for Caching in Django Projects
- Reading and Writing Cache in View Functions
- Page Caching with Decorators
- Providing Cache for Data APIs
- File Upload Form Controls and Image Preview
- Handling Uploaded Files on the Server Side
Day58 - Async and Scheduled Tasks
- The Second Law of Website Optimization
- Configuring Message Queue Services
- Implementing Async Tasks with Celery
- Implementing Scheduled Tasks with Celery
Day59 - Unit Testing
Day60 - Deploying Your Project
- Unit Testing in Python
- Django's Support for Unit Testing
- Using Version Control Systems
- Configuring and Using uWSGI
- Static/Dynamic Separation and Nginx Configuration
- Configuring HTTPS
- Configuring Domain Name Resolution
Day61 - Web Scraping Overview
- Web Crawler Concepts and Application Areas
- Legality of Web Crawlers
- Tools for Developing Web Crawlers
- Components of a Crawler Program
- Fetching Data with the
requestsLibrary - Three Methods for Page Parsing
- Regular Expression Parsing
- XPath Parsing
- CSS Selector Parsing
- Installing Selenium
- Loading Pages
- Finding Elements and Simulating User Actions
- Implicit and Explicit Waits
- Executing JavaScript Code
- Bypassing Selenium Anti-Scraping
- Setting Up Headless Browsers
Day65 - Introduction to Scrapy
- Scrapy Core Components
- Scrapy Workflow
- Installing Scrapy and Creating a Project
- Writing Spiders
- Writing Middleware and Pipeline Programs
- Scrapy Configuration Files
Day66 - Data Analysis Overview
- Data Analyst Responsibilities
- Data Analyst Skill Stack
- Data Analysis Libraries
Day67 - Environment Setup
- Installing and Using Anaconda
- conda Commands
- Installing and Using Jupyter Lab
- Installation and Startup
- Tips and Tricks
Day68 - NumPy Applications - Part 1
- Creating Array Objects
- Array Object Properties
- Array Indexing Operations
- Regular Indexing
- Fancy Indexing
- Boolean Indexing
- Slice Indexing
- Case Study: Processing Images with Arrays
Day69 - NumPy Applications - Part 2
- Array Object Methods
- Getting Descriptive Statistics
- Other Methods
Day70 - NumPy Applications - Part 3
- Array Operations
- Array and Scalar Operations
- Array and Array Operations
- Universal Unary Functions
- Universal Binary Functions
- Broadcasting Mechanism
- Common NumPy Functions
Day71 - NumPy Applications - Part 4
- Vectors
- Determinants
- Matrices
- Polynomials
Day72 - Pandas In Depth - Part 1
- Creating Series Objects
- Series Operations
- Series Properties and Methods
Day73 - Pandas In Depth - Part 2
- Creating DataFrame Objects
- DataFrame Properties and Methods
- Reading and Writing DataFrame Data
Day74 - Pandas In Depth - Part 3
- Data Reshaping
- Data Concatenation
- Data Merging
- Data Cleaning
- Missing Values
- Duplicate Values
- Outliers
- Preprocessing
Day75 - Pandas In Depth - Part 4
- Data Pivoting
- Getting Descriptive Statistics
- Sorting and Top Values
- Group Aggregation
- Pivot Tables and Cross Tables
- Data Presentation
Day76 - Pandas In Depth - Part 5
- Year-over-Year and Month-over-Month Calculations
- Window Calculations
- Correlation Analysis
Day77 - Pandas In Depth - Part 6
- Using Indexes
- Range Index
- Categorical Index
- Multi-Level Index
- Interval Index
- DateTime Index
Day78 - Data Visualization - Part 1
- Installing and Importing matplotlib
- Creating a Canvas
- Creating Axes
- Drawing Charts
- Line Charts
- Scatter Plots
- Bar Charts
- Pie Charts
- Histograms
- Box Plots
- Displaying and Saving Charts
Day79 - Data Visualization - Part 2
- Advanced Charts
- Bubble Charts
- Area Charts
- Radar Charts
- Rose Charts
- 3D Charts
Day80 - Data Visualization - Part 3
- Seaborn
- Pyecharts
Day81 - Introduction to Machine Learning
- History of Artificial Intelligence
- What is Machine Learning
- Machine Learning Application Areas
- Types of Machine Learning
- Steps in Machine Learning
- Your First Machine Learning Model
Day82 - K-Nearest Neighbors
- Distance Metrics
- Dataset Introduction
- Implementing kNN Classification
- Model Evaluation
- Hyperparameter Tuning
- Implementing kNN Regression
- Building Decision Trees
- Feature Selection
- Data Splitting
- Tree Pruning
- Implementing Decision Tree Models
- Random Forest Overview
Day84 - Naive Bayes
- Bayes' Theorem
- Naive Bayes
- Algorithm Principles
- Training Phase
- Prediction Phase
- Code Implementation
- Algorithm Pros and Cons
Day85 - Regression Models
- Types of Regression Models
- Calculating Regression Coefficients
- New Dataset Introduction
- Linear Regression Implementation
- Regression Model Evaluation
- Introducing Regularization
- Alternative Linear Regression Implementation
- Polynomial Regression
- Logistic Regression
Day86 - K-Means Clustering
- Algorithm Principles
- Mathematical Description
- Code Implementation
Day87 - Ensemble Learning
- Algorithm Categories
- AdaBoost
- GBDT
- XGBoost
- LightGBM
Day88 - Neural Networks
- Basic Components
- Working Principles
- Code Implementation
- Model Pros and Cons
Day89 - Introduction to NLP
- Bag of Words Model
- Word Vectors
- NPLM and RNN
- Seq2Seq
- Transformer
Day90 - Machine Learning in Practice
- Data Exploration
- Feature Engineering
- Model Training
- Model Evaluation
- Model Deployment
Day91~99 - Team Project Development
-
Software Process Models
-
Classic Process Model (Waterfall Model)
- Feasibility Analysis (whether to proceed or not), outputs a "Feasibility Analysis Report."
- Requirements Analysis (what to build), outputs a "Requirements Specification" and product UI prototypes.
- High-level and Detailed Design, outputs conceptual model diagrams (ER diagrams), physical model diagrams, class diagrams, sequence diagrams, etc.
- Coding / Testing.
- Deployment / Maintenance.
The biggest drawback of the waterfall model is its inability to embrace requirement changes. The team can only see the product after the entire process is complete, leading to low team morale.
-
Agile Development (Scrum) - Product Owner, Scrum Master, Development Team - Sprint
- Product Backlog (user stories, product prototypes).
- Planning Meeting (estimation and budgeting).
- Daily Development (standup meetings, Pomodoro Technique, pair programming, test-first, code refactoring...).
- Bug Fixes (problem description, reproduction steps, tester, assignee).
- Release Versions.
- Review Meeting (Showcase, requires user participation).
- Retrospective Meeting (summarize the current iteration).
Supplement: Manifesto for Agile Software Development
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Roles: Product Owner (decides what to build, the person who has final say on requirements), Team Lead (solves various problems, focuses on how to work better, shields the dev team from external influences), Development Team (project executors, specifically developers and testers).
Preparation: Business case and funding, contracts, vision, initial product requirements, initial release plan, stakeholder buy-in, team formation.
Agile teams typically have 8-10 members.
Work Estimation: Quantify development tasks including prototypes, logo design, UI design, frontend development, etc. Break each task into the smallest possible units where no single unit should take more than two days. Then estimate the overall project timeline. Post each task on a Kanban board with three sections: to do, in progress, and done.
-
-
Project Team Formation
-
Team Composition and Roles
-
Coding Standards and Code Review (
flake8,pylint) -
Python Conventions (see Python Programming Idioms)
-
Factors Affecting Code Readability:
- Too few or no code comments
- Code violates language best practices
- Anti-pattern programming (spaghetti code, copy-paste programming, ego programming, ...)
-
-
Team Development Tools
-
Topic Selection Scope
-
CMS (User-facing): News aggregation sites, Q&A/sharing communities, movie/book review sites, etc.
-
MIS (User-facing + Admin): KMS, KPI assessment systems, HRS, CRM systems, supply chain systems, warehouse management systems, etc.
-
App Backend (Admin + Data APIs): Second-hand trading, newspapers/magazines, niche e-commerce, news, travel, social, reading apps, etc.
-
Other Types: Based on your industry background and work experience, easy to understand and control.
-
-
Requirements Understanding, Module Division, and Task Assignment
- Requirements Understanding: Brainstorming and competitive analysis.
- Module Division: Draw mind maps (XMind), each module is a branch node, each specific function is a leaf node (described with verbs). Ensure each leaf node cannot generate new nodes. Determine the importance, priority, and workload of each leaf node.
- Task Assignment: The project lead assigns tasks to team members based on the above metrics.
-
Create Project Schedule (updated daily)
Module Feature Person Status Complete Hours Planned Start Actual Start Planned End Actual End Notes Comments Add Comment Wang Dachui In Progress 50% 4 2018/8/7 2018/8/7 Delete Comment Wang Dachui Waiting 0% 2 2018/8/7 2018/8/7 View Comments Bai Yuanfang In Progress 20% 4 2018/8/7 2018/8/7 Needs code review Vote on Comment Bai Yuanfang Waiting 0% 4 2018/8/8 2018/8/8 -
OOAD and Database Design
-
UML Class Diagrams
-
Creating tables from models (forward engineering), e.g., in a Django project:
python manage.py makemigrations app python manage.py migrate
-
Using PowerDesigner to draw physical model diagrams.
-
Creating models from tables (reverse engineering), e.g., in a Django project:
python manage.py inspectdb > app/models.py
Day92: Docker Container Technology
- Introduction to Docker
- Installing Docker
- Creating Containers with Docker (Nginx, MySQL, Redis, Gitlab, Jenkins)
- Building Docker Images (Writing Dockerfiles and Related Commands)
- Container Orchestration (Docker Compose)
- Cluster Management (Kubernetes)
- Basic Principles
- InnoDB Engine
- Index Usage and Considerations
- Data Partitioning
- SQL Optimization
- Configuration Optimization
- Architecture Optimization
Day94: Network API Interface Design
- Design Principles
- Key Issues
- Other Issues
- Documentation Writing
- Database Configuration (multiple databases, master-slave replication, database routing)
- Cache Configuration (partitioned cache, key settings, timeout settings, master-slave replication, failover with Sentinel)
- Logging Configuration
- Analysis and Debugging (Django-Debug-Toolbar)
- Useful Python Modules (date calculations, image processing, data encryption, third-party APIs)
- RESTful Architecture
- Writing API Documentation
- Using django-REST-framework
- Using Cache to Relieve Database Pressure - Redis
- Using Message Queues for Decoupling and Peak Shaving - Celery + RabbitMQ
- Types of Testing
- Writing Unit Tests (
unittest,pytest,nose2,tox,ddt, ...) - Test Coverage (
coverage)
- Pre-deployment Preparation
- Key Settings (SECRET_KEY / DEBUG / ALLOWED_HOSTS / Cache / Database)
- HTTPS / CSRF_COOKIE_SECURE / SESSION_COOKIE_SECURE
- Logging Configuration
- Linux Command Review
- Installing and Configuring Common Linux Services
- Using uWSGI/Gunicorn and Nginx
- Comparing Gunicorn and uWSGI
- For simple applications that don't require extensive customization, Gunicorn is a good choice. uWSGI has a much steeper learning curve than Gunicorn, and Gunicorn's default parameters already work well for most applications.
- uWSGI supports heterogeneous deployment.
- Since Nginx natively supports uWSGI, they are typically deployed together in production. uWSGI is a fully-featured and highly customizable WSGI middleware.
- In terms of performance, Gunicorn and uWSGI are actually comparable.
- Comparing Gunicorn and uWSGI
- Deploying Test and Production Environments with Virtualization (Docker)
- Using AB
- Using SQLslap
- Using sysbench
- Automated Testing with Shell and Python
- Automated Testing with Selenium
- Selenium IDE
- Selenium WebDriver
- Selenium Remote Control
- Introduction to the Robot Framework Testing Tool
- Business Models and Key Requirements
- Physical Model Design
- Third-Party Login
- Cache Warming and Query Caching
- Shopping Cart Implementation
- Payment Integration
- Flash Sales and Overselling Issues
- Static Resource Management
- Full-Text Search Solutions
- MySQL Database Tuning
- Web Server Performance Optimization
- Nginx Load Balancing Configuration
- High Availability with Keepalived
- Code Performance Tuning
- Multithreading
- Async Processing
- Static Resource Access Optimization
- Cloud Storage
- CDN
Day99: Common Interview Questions
- Computer Science Fundamentals
- Python Fundamentals
- Web Framework Topics
- Web Scraping Topics
- Data Analysis
- Project-Related Topics
Day100 - Supplementary Content
-
Interview Guides
- Python Interview Guide
- SQL Interview Guide (for Data Analysts)
- Business Analysis Interview Guide
- Machine Learning Interview Guide
-
Machine Learning Math Foundations
-
Deep Learning
- Computer Vision
- Large Language Models






