# Python : 100 days from Nob to Master

**URL:** <https://onehack.st/t/python-100-days-from-nob-to-master/101324>\
**Category:** Tutorials & Methods\
**Created:** [August 17, 2020, 5:01pm UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324 "2020-08-17T17:01:58Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![qdgta](https://onehack.st/user_avatar/onehack.st/qdgta/32/41682_2.png) [@qdgta](https://onehack.st/u/qdgta)\
**Post date:** [August 17, 2020, 5:01pm UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/1 "2020-08-17T17:01:58Z")

</div>

> **Real\_Author** : Luo Hao
> 
> **Note** : Since the project was launched to the 8w+ star, I have been receiving feedback that the basic part (the content of the first 15 days) is difficult for novices, and it is recommended to have a supporting video for explanation. Recently, I recreated a project called [“Python-Core-50-Courses”](https://github.com/jackfrued/Python-Core-50-Courses) from the basic part of the content **. This part of the content was rewritten in a simpler** and **more popular way and accompanied by a video explanation**. Beginners can pay attention to this new project. If domestic users are slow to access GitHub, they can also pay attention to the [“Learn Python from scratch”](https://zhuanlan.zhihu.com/c_1216656665569013760) column on my Zhihu [Python-Jack](https://www.zhihu.com/people/jackfrued) . The column will continue to be updated, and the content of “data analysis” that everyone is looking forward to will also be coming soon Online, **welcome everyone to pay attention to my columns, articles and answers in Zhihu**.
> 
> The creation is not easy. Thank you for your rewards and support. The money will basically not be used to buy coffee. Instead, it will be donated to people in need through platforms such as Tencent Charity, Meituan Charity, and Didi Chuan ( [click to](https://github.com/jackfrued/Python-100-Days/blob/master/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97.md) learn about donations). Those who need to join the QQ exchange group can scan the QR code below. The exchange group will provide you with **learning resources** and **answers to questions** , and will continue to bring you **free online Python experience courses and industry open courses** , so stay tuned.

[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/python-qq-group.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/python-qq-group.png)

### Analysis of Python application fields and employment situation

Simply put, Python is an “elegant”, “clear”, and “simple” programming language.

- Low learning curve, even non-professionals can get started
- Open source system, with a strong ecosystem
- Interpreted language, perfect platform portability
- Support object-oriented and functional programming
- Ability to extend functions by calling C/C++ code
- High degree of code standardization and strong readability

Python has its place in several popular fields.

- Cloud Infrastructure-Python / Java / Go
- DevOps-Python / Shell / Ruby / Go
- Web crawler-Python / PHP / C++
- Data analysis and mining-Python / R / Scala / Matlab
- Machine Learning-Python / R / Java / Lisp

As a Python developer, the main areas of employment include:

- Python server background development / game server development / data interface development engineer
- Python Automation Operation and Maintenance Engineer
- Python data analysis/ data visualization/ big data engineer
- Python crawler engineer
- Python chatbot development / image recognition and visual algorithms / deep learning engineer

The figure below shows the Python recruitment demand and salary ranking list in major cities (as of May 2018).

[![Python recruitment requirements and salary top 10](https://github.com/jackfrued/Python-100-Days/raw/master/res/python-top-10.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/python-top-10.png)

[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/python-bj-salary.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/python-bj-salary.png)

[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/python-salary-chengdu.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/python-salary-chengdu.png)

A few suggestions for beginners:

- Make English as your working language. (Make English as your working language)
- Practice makes perfect. (Practice makes perfect)
- All experience comes from mistakes. (All experience comes from mistakes.)
- Don’t be one of the leeches. (Don’t be one of the leeches.)
- Either outstanding or out. (either outstanding or out)

### Day01~15- [Python language foundation](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15)

#### Day01-Getting to Know [Python](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/01.%E5%88%9D%E8%AF%86Python.md)

- Introduction to Python-History of Python / Advantages and Disadvantages of Python / Application Fields of Python
- Set up a programming environment-Windows environment / Linux environment / MacOS environment
- Run Python program from terminal-Hello, world / print function / run program
- Use IDLE-Interactive Environment (REPL) / write multiple lines of code / run the program / exit IDLE
- Comment-The role of comments / single-line comments / multi-line comments

#### Day02- [Language Elements](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/02.%E8%AF%AD%E8%A8%80%E5%85%83%E7%B4%A0.md)

- Programs and bases-instructions and programs / Von Neumann machine / Binary and decimal / Octal and hexadecimal
- Variables and types-variable naming / variable use / input function / check variable type / type conversion
- Numbers and strings-integer / floating point / complex number / string / string basic operation / character encoding
- Operators-Mathematical Operators / Assignment Operators / Comparison Operators / Logical Operators / Identity Operators / Priority of Operators
- Application case-Convert Fahrenheit temperature to Celsius temperature / Enter the radius of the circle to calculate the circumference and area / Enter the year to determine whether it is a leap year

#### Day03- [branch structure](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/03.%E5%88%86%E6%94%AF%E7%BB%93%E6%9E%84.md)

- Application scenarios of branch structure-condition / indentation / code block / flow chart
- if statement-simple if / if-else structure / if-elif-else structure / nested if
- Application case-User authentication / Interchange of imperial units and metric units / Decide what to do by rolling the dice / Converting percentile scores to grade system / Evaluation of piecewise function / Enter the length of three sides, if they can form a triangle, calculate the perimeter and area

#### Day04- [Loop structure](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/04.%E5%BE%AA%E7%8E%AF%E7%BB%93%E6%9E%84.md)

- Application scenarios of loop structure-condition/indentation/code block/flow chart
- while loop-basic structure / break statement / continue statement
- for loop-basic structure / range type / branch structure in loop / nested loop / end program early
- Application case-1~100 summation / judging prime numbers / guessing the number game / printing the nine-nine table / printing the triangle pattern / monkeys eating peaches / hundred money and hundred chickens

#### Day05- [Constructing program logic](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/05.%E6%9E%84%E9%80%A0%E7%A8%8B%E5%BA%8F%E9%80%BB%E8%BE%91.md)

- Classic case: the number of daffodils / a hundred money and a hundred chickens / Craps gambling game
- Practice questions: Fibonacci sequence / perfect numbers / prime numbers

#### Day06-Use of [functions and modules](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/06.%E5%87%BD%E6%95%B0%E5%92%8C%E6%A8%A1%E5%9D%97%E7%9A%84%E4%BD%BF%E7%94%A8.md)

- The role of the function-bad smell of the code / function module encapsulation
- Define function-def statement/function name/parameter list/return statement/call custom function
- Call function-Python built-in functions / import modules and functions
- Function parameters-default parameters / variable parameters / keyword parameters / named keyword parameters
- The return value of the function-no return value / return a single value / return multiple values
- Scope issues-local scope / nested scope / global scope / built-in scope / scope-related keywords
- Manage functions with modules-the concept of modules / use custom modules to manage functions / what happens when naming conflicts (the same module and different modules)

#### Day07- [Strings and common data structures](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/07.%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%92%8C%E5%B8%B8%E7%94%A8%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md)

- The use of string-calculation length / subscript operation / slicing / common methods
- Basic usage of list-define list / use the following table to access elements / subscript out of range / add element / delete element / modify element / slice / loop traversal
- Common List Operations-Concatenation / Copy (Copy Elements and Copy Array) / Length / Sort / Reverse / Find
- Generate list-use range to create a list of numbers / generate expressions / generators
- Use of tuples-define tuples / use values ​​in tuples / modify tuple variables / tuples and list conversion
- Basic usage of collection-the difference between collection and list / create collection / add element / delete element / empty
- Common Set Operations-Intersection / Union / Difference / Symmetric Difference / Subset / Superset
- The basic usage of the dictionary-the characteristics of the dictionary / create a dictionary / add elements / delete elements / take values ​​/ empty
- Common dictionary operations-keys() method/ values() method/ items() method/ setdefault() method
- Basic exercises-marquee effect / find the largest element in a list / statistical test score average / Fibonacci sequence / Yang Hui triangle
- Comprehensive case-Two-color ball number selection / Tic-Tac-Toe

#### Day08- [Fundamentals of Object](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/08.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80.md) - [Oriented Programming](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/08.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80.md)

- Classes and objects-what is a class / what is an object / other related object-oriented concepts
- Define the class-basic structure / attributes and methods / constructor / destructor / **str** method
- Use object-create object / send message to object
- Four pillars of object-oriented-abstraction / encapsulation / inheritance / polymorphism
- Basic exercises-define student class/ define clock class/ define graphics class/ define car class

#### Day09- [Advanced Object Oriented](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/09.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%BF%9B%E9%98%B6.md)

- Attribute-class attribute / instance attribute / attribute accessor / attribute modifier / attribute deleter / use **slots**
- Method in class-instance method/class method/static method
- Operator overloading- **add** / **sub** / **or** / **getitem** / **setitem** / **len** / **repr** / **gt** / **lt** / **le** / **ge** / **eq** / **ne** / **contains**
- The relationship between classes (of objects)-association/inheritance/dependency
- Inheritance and polymorphism-what is the inheritance/ syntax of inheritance/ calling parent method/ method rewriting/ type determination/ multiple inheritance/ diamond inheritance (diamond inheritance) and C3 algorithm
- Comprehensive Case-Salary Settlement System / Automatic Book Discount System / Customized Score

#### Day10- [Graphical user interface and game development](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/10.%E5%9B%BE%E5%BD%A2%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%E5%92%8C%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91.md)

- Use tkinter to develop GUI programs
- Use pygame third party library to develop game applications
- “Big ball eats small ball” game

#### Day11- [files and exceptions](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/11.%E6%96%87%E4%BB%B6%E5%92%8C%E5%BC%82%E5%B8%B8.md)

- Read file-read the entire file / line by line / file path
- Write file-overwrite writing/additional writing/text file/binary file
- Exception Handling-The importance of exception mechanism / try-except code block / else code block / finally code block / built-in exception type / exception stack / raise statement
- Data Persistence-Overview of CSV File / Application of csv Module / JSON Data Format / Application of json Module

#### Day12- [strings and regular expressions](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/12.%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.md)

- Advanced string operations-escape characters / original strings / multi-line strings / in and not in operators / methods at the beginning of is / join and split methods / strip related methods / pyperclip module / invariant strings and variable characters Use of String/StringIO
- Introduction to regular expressions-the role of regular expressions / metacharacters / escapes / quantifiers / grouping / zero-width assertions / greedy matching and lazy matching laziness / using the re module to implement regular expression operations (matching, searching, replacing, capturing)
- Use regular expressions-re module / compile function / group and groups method / match method / search method / findall and finditer method / sub and subn method / split method
- Application Case-Use regular expressions to verify the input string

#### Day13- [Processes and threads](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/13.%E8%BF%9B%E7%A8%8B%E5%92%8C%E7%BA%BF%E7%A8%8B.md)

- The concept of processes and threads-what is a process / what is a thread / multi-threaded application scenarios
- Use process-fork function / multiprocessing module / process pool / inter-process communication
- Use thread-thread module / threading module / Thread class / Lock class / Condition class / thread pool

#### Day14- [Introduction to Network Programming and Network Application Development](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/14.%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8%E5%92%8C%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91.md)

- Computer Network Foundation-History of Computer Network Development / “TCP-IP” Model / IP Address / Port / Protocol / Other Related Concepts
- Network Application Mode-“Client-Server” Mode / “Browser-Server” Mode
- Access network resources based on HTTP protocol-Network API overview / access URL / requests module / parse JSON format data
- Python network programming-the concept of socket / socket module / socket function / create TCP server / create TCP client / create UDP server / create UDP client / SocketServer module
- Email-SMTP protocol / POP3 protocol / IMAP protocol / smtplib module / poplib module / imaplib module
- SMS Service-Call SMS Service Gateway

#### Day15- [Image and document processing](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/15.%E5%9B%BE%E5%83%8F%E5%92%8C%E5%8A%9E%E5%85%AC%E6%96%87%E6%A1%A3%E5%A4%84%E7%90%86.md)

- Use Pillow to process pictures-picture reading and writing / picture synthesis / geometric transformation / color conversion / filter effect
- Reading and writing Word documents-text content processing/paragraph/header and footer/style processing
- Read and write Excel files-xlrd module / xlwt module
- Generate PDF files-pypdf2 module / reportlab module

### Day16~Day20- [Advanced Python language](https://github.com/jackfrued/Python-100-Days/blob/master/Day16-20/16-20.Python%E8%AF%AD%E8%A8%80%E8%BF%9B%E9%98%B6.md)

- Common data structure
- Advanced usage of functions-“first-class citizens” / higher-order functions / Lambda functions / scopes and closures / decorators
- Advanced Object-Oriented Knowledge-“Three Pillars” / Relationship Between Classes / Garbage Collection / Magic Properties and Methods / Mixing / Metaclasses / Object-Oriented Design Principles / GoF Design Pattern
- Iterators and generators-related magic methods / two ways to create generators /
- Concurrent and asynchronous programming-multithreading/multiprocessing/asynchronous IO/async and await

### Day21~30-Introduction to [Web Front End](https://github.com/jackfrued/Python-100-Days/blob/master/Day21-30/21-30.Web%E5%89%8D%E7%AB%AF%E6%A6%82%E8%BF%B0.md)

- Use HTML tags to carry page content
- Render the page with CSS
- Handling interactive behaviors with JavaScript
- jQuery entry and improvement
- Getting started with Vue.js
- Use of Element
- Use of Bootstrap

### Day31~35- [Fun with Linux operating system](https://github.com/jackfrued/Python-100-Days/blob/master/Day31-35/31-35.%E7%8E%A9%E8%BD%ACLinux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.md)

- Operating system development history and Linux overview
- Linux basic commands
- Utilities in Linux
- Linux file system
- Vim editor application
- Environment variables and Shell programming
- Software installation and service configuration
- Network access and management
- Other related content

### Day36~40- [Database basics and advanced](https://github.com/jackfrued/Python-100-Days/blob/master/Day36-40)

- [Relational database MySQL](https://github.com/jackfrued/Python-100-Days/blob/master/Day36-40/36-38.%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93MySQL.md)
  - Overview of relational databases
  - MySQL installation and use
  - Use of SQL
    - DDL-Data Definition Language-create / drop / alter
    - DML-Data Manipulation Language-insert / delete / update / select
    - DCL-Data Control Language-grant / revoke

  - related information
    - Paradigm Theory-the guiding ideology for designing two-dimensional tables
    - Data integrity
    - Data consistency

  - Operate MySQL in Python

- [Getting started with NoSQL](https://github.com/jackfrued/Python-100-Days/blob/master/Day36-40/39-40.NoSQL%E5%85%A5%E9%97%A8.md)
  - NoSQL overview
  - Redis overview
  - Mongo overview

### Day41~55- [Practical Django](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55)

#### Day41- [Django quick start](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/41.Django%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.md)

- Web application working mechanism
- HTTP request and response
- Django framework overview
- Quick start in 5 minutes

#### Day42- [in](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/42.%E6%B7%B1%E5%85%A5%E6%A8%A1%E5%9E%8B.md) - [depth model](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/42.%E6%B7%B1%E5%85%A5%E6%A8%A1%E5%9E%8B.md)

- Relational database configuration
- Use ORM to complete CRUD operations on the model
- Use of management background
- Django model best practices
- Model definition reference

#### Day43- [Static resources and Ajax requests](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/43.%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E5%92%8CAjax%E8%AF%B7%E6%B1%82.md)

- Load static resources
- Ajax overview
- Implement voting function with Ajax

#### Day44- [Cookie and Session](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/44.Cookie%E5%92%8CSession.md)

- Implement user tracking
- The relationship between cookie and session
- Django framework support for session
- Cookie read and write operations in view functions

#### Day45- [reports and logs](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/45.%E5%88%B6%E4%BD%9C%E6%8A%A5%E8%A1%A8.md)

- Modify the response header through HttpResponse
- Use StreamingHttpResponse to process large files
- Use xlwt to generate Excel reports
- Use reportlab to generate PDF reports
- Use ECharts to generate front-end charts

#### Day46- [Log and debug toolbar](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/46.%E6%97%A5%E5%BF%97%E5%92%8C%E8%B0%83%E8%AF%95%E5%B7%A5%E5%85%B7%E6%A0%8F.md)

- Configuration log
- Configure Django-Debug-Toolbar
- Optimize ORM code

#### Day47- [Middleware Application](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/47.%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E5%BA%94%E7%94%A8.md)

- What is middleware
- Middleware built into Django framework
- Custom middleware and its application scenarios

#### Day48- [Introduction to Front-end and](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/48.%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8.md) Back- [end Separation](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/48.%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8.md)

- Return data in JSON format
- Render the page with Vue.js

#### Day49- [Introduction to RESTful architecture and DRF](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/49.RESTful%E6%9E%B6%E6%9E%84%E5%92%8CDRF%E5%85%A5%E9%97%A8.md)

#### Day50- [RESTful architecture and advanced DRF](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/50.RESTful%E6%9E%B6%E6%9E%84%E5%92%8CDRF%E8%BF%9B%E9%98%B6.md)

#### Day51- [Use cache](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/51.%E4%BD%BF%E7%94%A8%E7%BC%93%E5%AD%98.md)

- The first law of website optimization
- Use Redis to provide caching service in Django project
- Read and write cache in view function
- Use decorators to implement page caching
- Provide caching service for data interface

#### Day52- [file upload](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/52.%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0.md)

- File upload form control and image file preview
- How the server handles uploaded files

#### Day53- [Asynchronous tasks and timing tasks](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/53.%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E5%92%8C%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1.md)

- The second law of website optimization
- Configure message queue service
- Use celery to implement task asynchronization in the project
- Use celery to implement timing tasks in the project

#### Day54- [unit testing](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/54.%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.md)

#### Day55- [project online](https://github.com/jackfrued/Python-100-Days/blob/master/Day41-55/55.%E9%A1%B9%E7%9B%AE%E4%B8%8A%E7%BA%BF.md)

- Unit testing in Python
- Django framework’s support for unit testing
- Use version control system
- Configure and use uWSGI
- Dynamic separation and Nginx configuration
- Configure HTTPS
- Configure domain name resolution

### Day56~60- [Actual Combat Flask](https://github.com/jackfrued/Python-100-Days/blob/master/Day56-65)

#### Day56- [Getting started with Flask](https://github.com/jackfrued/Python-100-Days/blob/master/Day56-60/56.Flask%E5%85%A5%E9%97%A8.md)

#### Day57- [Use of templates](https://github.com/jackfrued/Python-100-Days/blob/master/Day56-60/57.%E6%A8%A1%E6%9D%BF%E7%9A%84%E4%BD%BF%E7%94%A8.md)

#### Day58- [Form processing](https://github.com/jackfrued/Python-100-Days/blob/master/Day56-60/58.%E8%A1%A8%E5%8D%95%E7%9A%84%E5%A4%84%E7%90%86.md)

#### Day59- [database operations](https://github.com/jackfrued/Python-100-Days/blob/master/Day56-60/59.%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C.md)

#### Day60- [actual project](https://github.com/jackfrued/Python-100-Days/blob/master/Day56-60/60.%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98.md)

### Day61~65- [Actual Tornado](https://github.com/jackfrued/Python-100-Days/blob/master/Day61-65)

#### Day61- [Preliminary Knowledge](https://github.com/jackfrued/Python-100-Days/blob/master/Day61-65/61.%E9%A2%84%E5%A4%87%E7%9F%A5%E8%AF%86.md)

- Concurrent programming
- I/O mode and event driven

#### Day62- [Getting started with Tornado](https://github.com/jackfrued/Python-100-Days/blob/master/Day61-65/62.Tornado%E5%85%A5%E9%97%A8.md)

- Tornado overview
- 5 minutes to get started with Tornado
- Route resolution
- Request handler

#### Day63- [Asynchronization](https://github.com/jackfrued/Python-100-Days/blob/master/Day61-65/63.%E5%BC%82%E6%AD%A5%E5%8C%96.md)

- The use of aiomysql and aioredis

#### Day64- [Application of WebSocket](https://github.com/jackfrued/Python-100-Days/blob/master/Day61-65/64.WebSocket%E7%9A%84%E5%BA%94%E7%94%A8.md)

- Introduction to WebSocket
- WebSocket server-side programming
- WebSocket client programming
- Project: Web chat room

#### Day65- [Project Actual Combat](https://github.com/jackfrued/Python-100-Days/blob/master/Day61-65/65.%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98.md)

- Front-end and back-end separate development and interface document writing
- Use Vue.js to achieve front-end rendering
- Use ECharts to realize report function
- Use WebSocket to implement push service

### Day66~75- [crawler development](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75)

#### Day66- [Web crawlers and related tools](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/66.%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%92%8C%E7%9B%B8%E5%85%B3%E5%B7%A5%E5%85%B7.md)

- The concept of web crawler and its application field
- Discussion on the legality of web crawlers
- Tools for developing web crawlers
- The composition of a crawler

#### Day67- [Data Collection and Analysis](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/67.%E6%95%B0%E6%8D%AE%E9%87%87%E9%9B%86%E5%92%8C%E8%A7%A3%E6%9E%90.md)

- Standards and tripartite libraries for data collection
- Three ways of page parsing: regular expression parsing/XPath parsing/CSS selector parsing

#### Day68- [store data](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/68.%E5%AD%98%E5%82%A8%E6%95%B0%E6%8D%AE.md)

- How to store massive amounts of data
- Implement data caching

#### Day69- [concurrent download](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/69.%E5%B9%B6%E5%8F%91%E4%B8%8B%E8%BD%BD.md)

- Multithreading and multiprocessing
- Asynchronous I/O and coroutines
- The use of async and await keywords
- Application of the three party library aiohttp

#### Day70- [Parse dynamic content](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/70.%E8%A7%A3%E6%9E%90%E5%8A%A8%E6%80%81%E5%86%85%E5%AE%B9.md)

- JavaScript reverse engineering
- Use Selenium to get dynamic content

#### Day71- [Form interaction and verification code processing](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/71.%E8%A1%A8%E5%8D%95%E4%BA%A4%E4%BA%92%E5%92%8C%E9%AA%8C%E8%AF%81%E7%A0%81%E5%A4%84%E7%90%86.md)

- Auto submit form
- Cookie pool application
- Verification code processing

#### Day72- [Getting Started with Scrapy](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/72.Scrapy%E5%85%A5%E9%97%A8.md)

- Scrapy crawler framework overview
- Install and use Scrapy

#### Day73- [Scrapy Advanced Application](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/73.Scrapy%E9%AB%98%E7%BA%A7%E5%BA%94%E7%94%A8.md)

- Spider usage
- Middleware application: download middleware / spider middleware
- Scrapy docks with Selenium to capture dynamic content
- Scrapy deployed to Docker

#### Day74- [Scrapy distributed implementation](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/74.Scrapy%E5%88%86%E5%B8%83%E5%BC%8F%E5%AE%9E%E7%8E%B0.md)

- Principles of distributed crawlers
- Scrapy distributed implementation
- Use Scrapyd to implement distributed deployment

#### Day75- [Reptile Project Actual Combat](https://github.com/jackfrued/Python-100-Days/blob/master/Day66-75/75.%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98.md)

- Crawling recruitment website data
- Crawling real estate industry data
- Crawling used car trading platform data

### Day76~90- [Data Analysis and Machine Learning](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90)

> **Reminder** : The content of data analysis and machine learning is in the code folder. It is the code and notes written in jupyter notebook. You need to start jupyter notebook and then open the corresponding file for learning. Relevant documents will continue to be supplemented in 2020, and I hope you will continue to pay attention.

#### Day76- [Machine Learning Fundamentals](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/76.%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80.md)

#### Day77- [Application of Pandas](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/77.Pandas%E7%9A%84%E5%BA%94%E7%94%A8.md)

#### Day78-Application of [NumPy and SciPy](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/78.NumPy%E5%92%8CSciPy%E7%9A%84%E5%BA%94%E7%94%A8)

#### Day79- [Matplotlib and data visualization](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/79.Matplotlib%E5%92%8C%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96)

#### Day80- [k nearest neighbor (KNN) classification](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/80.k%E6%9C%80%E8%BF%91%E9%82%BB%E5%88%86%E7%B1%BB.md)

#### Day81- [Decision Tree](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/81.%E5%86%B3%E7%AD%96%E6%A0%91.md)

#### Day82- [Bayesian Classification](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/82.%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%88%86%E7%B1%BB.md)

#### Day83- [Support Vector Machine (SVM)](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/83.%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA.md)

#### Day84- [K-means clustering](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/84.K-%E5%9D%87%E5%80%BC%E8%81%9A%E7%B1%BB.md)

#### Day85- [regression analysis](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/85.%E5%9B%9E%E5%BD%92%E5%88%86%E6%9E%90.md)

#### Day86- [Introduction to Big Data Analysis](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/86.%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%85%A5%E9%97%A8.md)

#### Day87- [Advanced Big Data Analysis](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/87.%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E8%BF%9B%E9%98%B6.md)

#### Day88- [Getting Started with Tensorflow](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/88.Tensorflow%E5%85%A5%E9%97%A8.md)

#### Day89- [Tensorflow combat](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/89.Tensorflow%E5%AE%9E%E6%88%98.md)

#### Day90- [Recommended system combat](https://github.com/jackfrued/Python-100-Days/blob/master/Day76-90/90.%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E5%AE%9E%E6%88%98.md)

### Day91~100- [Team project development](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100)

#### Day 91: [Problems and solutions for team project development](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/91.%E5%9B%A2%E9%98%9F%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E7%9A%84%E9%97%AE%E9%A2%98%E5%92%8C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.md)

1. Software process model

- Classic process model (waterfall model)
  - Feasibility analysis (whether the research is done or not), and output the “feasibility analysis report”.
  - Requirement analysis (study what to do), output “requirements specification” and product interface prototype diagram.
  - Outline design and detailed design, output conceptual model diagram (ER diagram), physical model diagram, class diagram, sequence diagram, etc.
  - Coding/testing.
  - Go online/maintenance.The biggest disadvantage of the waterfall model is that it cannot embrace changes in requirements. The product can only be seen after the entire process is over, and the team morale is low.

- Agile Development (Scrum)-Product Owner, Scrum Master, R&D Staff-Sprint
  - Product Backlog (user story, product prototype).
  - Planning meetings (evaluation and budgeting).
  - Daily development (stand-up meeting, Pomodoro Technique, pair programming, test first, code refactoring…).
  - Fix bugs (problem description, reproduction steps, testers, designees).
  - release version.
  - Review meeting (Showcase, users need to participate).
  - Retrospective meeting (a summary of the current iteration cycle).

> Supplement: Manifesto for Agile Software Development
> 
> ```
> * **Individuals and interactions are** higher than processes and tools
> * **Working software is** higher than detailed documentation
> * **Customer cooperation is** higher than contract negotiation
> * **Responding to changes is** better than following a plan
> 
> ```

[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/agile-scrum-sprint-cycle.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/agile-scrum-sprint-cycle.png)

> Roles: product owner (the person who decides what to do and can approve the demand), team leader (solve various problems, focus on how to work better, shield the external influence on the development team), development team (project executive, Specifically refers to developers and testers).

> Preparation work: business case and capital, contract, vision, initial product requirements, initial release plan, shareholding, and team formation.

> Agile teams usually have 8-10 people.

> Estimation of workload: Quantify the development tasks, including prototype, logo design, UI design, front-end development, etc., try to break down each work to the minimum amount of tasks, the minimum task amount standard is that the working time cannot exceed two days, and then estimate the overall project time . Post each task on the Kanban board, which is divided into three parts: to do (to be completed), in progress (in progress) and done (completed).

1. Project team formation

- Team composition and roles

> Note: Thank you Ms. **Fu Xiangying for** helping me draw the following beautiful company organization chart.  
> [![company_architecture](https://github.com/jackfrued/Python-100-Days/raw/master/res/company_architecture.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/company_architecture.png)

- Programming specification and code review (flake8, pylint)[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/pylint.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/pylint.png)
- Some “conventions” in [Python](https://github.com/jackfrued/Python-100-Days/blob/master/Python%E6%83%AF%E4%BE%8B.md) (please refer to [“Python Conventions-How to Write Pythonic Code”](https://github.com/jackfrued/Python-100-Days/blob/master/Python%E6%83%AF%E4%BE%8B.md) )
- Reasons affecting code readability:
  - Code comments are too few or no comments
  - Code breaks language best practices
  - Anti-pattern programming (spaghetti code, copy-paste programming, conceit programming,…)

1. Introduction to team development tools

- Version control: Git, Mercury
- Defect management: [Gitlab](https://about.gitlab.com/) , [Redmine](http://www.redmine.org.cn/)
- Agile closed-loop tools: [Zen Tao](https://www.zentao.net/) , [JIRA](https://www.atlassian.com/software/jira/features)
- Continuous integration: [Jenkins](https://jenkins.io/) , [Travis-CI](https://travis-ci.org/)Please refer to [“Problems and Solutions for Team Project Development”](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/91.%E5%9B%A2%E9%98%9F%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E7%9A%84%E9%97%AE%E9%A2%98%E5%92%8C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.md) .

##### Project topic selection and business understanding

1. Topic selection range setting

- CMS (user terminal): news aggregation website, Q&A/sharing community, film review/book review website, etc.
- MIS (user side + management side): KMS, KPI assessment system, HRS, CRM system, supply chain system, warehouse management system, etc.
- App background (management terminal + data interface): second-hand trading, newspapers and magazines, niche e-commerce, news information, travel, social, reading, etc.
- Other types: own industry background and work experience, business is easy to understand and control.

1. Requirements understanding, module division and task allocation

- Need understanding: brainstorming and competitive product analysis.
- Module division: draw a mind map (XMind), each module is a branch node, and each specific function is a leaf node (expressed in verbs). It is necessary to ensure that each leaf node cannot regenerate a new node, and determine each leaf The importance, priority and workload of the node.
- Task assignment: The project leader assigns tasks to each team member according to the above indicators.[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/requirements_by_xmind.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/requirements_by_xmind.png)

1. Develop project schedule (updated daily)

| Module | Features | personnel | status | carry out | Working hours | Plan started | Actual start | End of plan | Actual end | Remarks |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| comment | add comment | Wang Dahui | Ongoing | 50% | 4 | 2018/8/7 | | 2018/8/7 | | |
| | Delete comment | Wang Dahui | wait | 0% | 2 | 2018/8/7 | | 2018/8/7 | | |
| | View comments | Bai Yuanfang | Ongoing | 20% | 4 | 2018/8/7 | | 2018/8/7 | | Code review required |
| | Comment vote | Bai Yuanfang | wait | 0% | 4 | 2018/8/8 | | 2018/8/8 | | |

1. OOAD and database design

- UML (Unified Modeling Language) class diagram[![uml](https://github.com/jackfrued/Python-100-Days/raw/master/res/uml-class-diagram.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/uml-class-diagram.png)
- Create table from model (forward engineering)

python manage.py makemigrations app python manage.py migrate

- Use PowerDesigner to draw physical model diagrams.[![](https://github.com/jackfrued/Python-100-Days/raw/master/res/power-designer-pdm.png)](https://github.com/jackfrued/Python-100-Days/blob/master/res/power-designer-pdm.png)
- Create model from data table (reverse engineering)

python manage.py inspectdb \> app/models.py

#### Day 92: [Docker container explained](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/92.Docker%E5%AE%B9%E5%99%A8%E8%AF%A6%E8%A7%A3.md)

1. Introduction to Docker
2. Install Docker
3. Use Docker to create containers (Nginx, MySQL, Redis, Gitlab, Jenkins)
4. Build Docker image (write Dockerfile and related instructions)
5. Container Orchestration (Docker-compose)
6. Cluster Management (Kubernetes)

#### Day 93: [MySQL performance optimization](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/93.MySQL%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.md)

#### Day 94: [Web API interface design](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/94.%E7%BD%91%E7%BB%9CAPI%E6%8E%A5%E5%8F%A3%E8%AE%BE%E8%AE%A1.md)

#### Day 95: [Develop commercial projects using Django](./Day91-100/95. Use Django to develop commercial projects.md)

##### Public issues in project development

1. Database configuration (multi-database, master-slave replication, database routing)
2. Cache configuration (partition cache, key settings, timeout settings, master-slave replication, failure recovery (sentinel))
3. Log configuration
4. Analysis and debugging (Django-Debug-ToolBar)
5. Useful Python modules (date calculation, image processing, data encryption, three-party API)

##### REST API design

1. RESTful architecture

- [Understand RESTful architecture](http://www.ruanyifeng.com/blog/2011/09/restful.html)
- [RESTful API design guide](http://www.ruanyifeng.com/blog/2014/05/restful_api.html)
- [RESTful API best practices](http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html)

1. API interface document writing

- [RAP2](http://rap2.taobao.org/)
- [YAPI](http://yapi.demo.qunar.com/)

1. [django-REST-framework](https://www.django-rest-framework.org/) application

##### Analysis of key and difficult points in the project

1. Use cache to relieve database pressure-Redis
2. Use message queues for decoupling and peak clipping-Celery + RabbitMQ

#### Day 96: [Software testing and automated testing](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/96.%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%92%8C%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95.md)

##### unit test

1. Type of test
2. Write unit tests (unittest, pytest, nose2, tox, ddt,…)
3. Test coverage (coverage)

##### Project deployment

1. Preparation before deployment

- Key settings (SECRET\_KEY / DEBUG / ALLOWED\_HOSTS / cache / database)
- HTTPS / CSRF\_COOKIE\_SECUR / SESSION\_COOKIE\_SECURE
- Log related configuration

1. Review of Linux commonly used commands
2. Installation and configuration of Linux common services
3. Use of uWSGI/Gunicorn and Nginx

- Comparison of Gunicorn and uWSGI
  - For simple applications that do not require a lot of customization, Gunicorn is a good choice. The learning curve of uWSGI is much steeper than that of Gunicorn. Gunicorn’s default parameters can already be adapted to most applications.
  - uWSGI supports heterogeneous deployment.
  - Since Nginx itself supports uWSGI, Nginx and uWSGI are generally bundled and deployed online, and uWSGI is a fully functional and highly customized WSGI middleware.
  - In terms of performance, Gunicorn and uWSGI are actually comparable.

1. Use virtualization technology (Docker) to deploy test and production environments

##### Performance Testing

1. Use of AB
2. Use of SQLslap
3. Use of sysbench

##### automated test

1. Use Shell and Python for automated testing
2. Use Selenium to implement automated testing

- Selenium IDE
- Selenium WebDriver
- Selenium Remote Control

1. Introduction of testing tool Robot Framework

#### Day 97: [Analysis of technical points of e-commerce website](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/97.%E7%94%B5%E5%95%86%E7%BD%91%E7%AB%99%E6%8A%80%E6%9C%AF%E8%A6%81%E7%82%B9%E5%89%96%E6%9E%90.md)

#### Day 98: [Project deployment and performance tuning](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/98.%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2%E4%B8%8A%E7%BA%BF%E5%92%8C%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98.md)

1. MySQL database tuning
2. Web server performance optimization

- Nginx load balancing configuration
- Keepalived achieves high availability

1. Code performance tuning

- Multithreading
- Asynchronous

1. Static resource access optimization

- Cloud storage
- CDN

#### Day 99: [Public questions in the interview](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/99.%E9%9D%A2%E8%AF%95%E4%B8%AD%E7%9A%84%E5%85%AC%E5%85%B1%E9%97%AE%E9%A2%98.md)

#### Day 100: [Python interview question set](https://github.com/jackfrued/Python-100-Days/blob/master/Day91-100/100.Python%E9%9D%A2%E8%AF%95%E9%A2%98%E9%9B%86.md)

---

<div class="post-metadata">

**Author:** ![glitch\_evil](https://onehack.st/user_avatar/onehack.st/glitch_evil/32/49225_2.png) [@glitch\_evil](https://onehack.st/u/glitch_evil)\
**Post date:** [August 18, 2020, 8:00pm UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/2 "2020-08-18T20:00:39Z")

</div>

pls put it in english

---

<div class="post-metadata">

**Author:** ![BadFella](https://onehack.st/user_avatar/onehack.st/badfella/32/88045_2.png) [@BadFella](https://onehack.st/u/BadFella)\
**Post date:** [August 18, 2020, 9:28pm UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/3 "2020-08-18T21:28:47Z")

</div>

Use Google Translate.

 ![image](https://onehack.st/uploads/default/original/3X/4/7/47e57715542ae935cd97fb403eb7cb0de6dd4397.png)

---

<div class="post-metadata">

**Author:** ![WEBD](https://onehack.st/user_avatar/onehack.st/webd/32/117499_2.png) [@WEBD](https://onehack.st/u/WEBD)\
**Post date:** [August 18, 2020, 11:09pm UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/4 "2020-08-18T23:09:41Z")

</div>

Nice share…thanks a lot.

---

<div class="post-metadata">

**Author:** ![Ashish\_Srivastav](https://onehack.st/user_avatar/onehack.st/ashish_srivastav/32/74575_2.png) [@Ashish\_Srivastav](https://onehack.st/u/Ashish_Srivastav)\
**Post date:** [November 9, 2020, 8:04am UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/6 "2020-11-09T08:04:16Z")

</div>

thanks for sharing, i really want to learn programming

---

<div class="post-metadata">

**Author:** ![sfhussain8](https://onehack.st/letter_avatar_proxy/v4/letter/s/48db29/32.png) [@sfhussain8](https://onehack.st/u/sfhussain8)\
**Post date:** [November 9, 2020, 8:11pm UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/7 "2020-11-09T20:11:56Z")

</div>

> [@qdgta](#):
>
> Python language foundation

Can’t appreciate enouh.. 🙂

---

<div class="post-metadata">

**Author:** ![Lokesh\_Mishra](https://onehack.st/user_avatar/onehack.st/lokesh_mishra/32/44266_2.png) [@Lokesh\_Mishra](https://onehack.st/u/Lokesh_Mishra)\
**Post date:** [November 10, 2020, 9:18am UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/8 "2020-11-10T09:18:52Z")

</div>

Complete guide in itself

---

<div class="post-metadata">

**Author:** ![Goody](https://onehack.st/user_avatar/onehack.st/goody/32/23317_2.png) [@Goody](https://onehack.st/u/Goody)\
**Post date:** [November 10, 2020, 9:36am UTC](https://onehack.st/t/python-100-days-from-nob-to-master/101324/9 "2020-11-10T09:36:00Z")

</div>

Good, thanks.
