W3docs

Python - The Practical Guide

Learn Python from the ground up and use Python to build a hands-on project from scratch!

Start course

Want to learn Python "on the job" whilst building an exciting course project? This course is for you!

This is a highly practice-oriented Python course that teaches you Python from scratch - no prior programming experience required!

Python is probably THE most trending programming language you can learn these days!

It's very popular because it's easy to learn and use, runs on all operating systems and allows you to build a broad variety of programs: Be that web applications, desktop applications, utility scripts or using it for data science and machine learning.

In this course, you'll learn Python from scratch - and you'll do so whilst building your own Blockchain and Cryptocurrency. These are of course also highly trending topics and not a lot of people understand what a Blockchain really is. As a nice side-effect, you will know how a Blockchain works once you completed this course. It's an exciting course project that allows you to learn and apply Python to something you know and you can use.

Why Python?

As written above, Python is both easy-to-use and extremely versatile and powerful at the same time. Certainly not the worst combination. If you check it on Google trends (and compare it to other programming languages), you'll see that it's very popular these days.

It's being used by almost any important company - be that Google, Amazon or Facebook. It's used to run web applications, scripts, desktop programs and machine learning algorithms. This course sets the basics for all these use-cases!

Why Blockchain?

I believe that you learn something best if you directly apply it to a real-world project. And the Blockchain technology is an exciting trend which is there to stay. In this course, you'll learn a lot about the core concepts of the Blockchain and you'll see how Python can be used for the many aspects that make up a Blockchain and Cryptocurrency.

In my opinion, a perfect course project is challenging, interesting, something you know from real-life but also not overly complex. And that's all the case for the Blockchain! It poses some nice challenges where a lot of different Python features can be used to overcome them. It also is something we hear about all the time and yet no one knows how it works. And we can dive into the core Blockchain concepts without spending 100+ hours working on it.

As written above, Python is both easy-to-use and extremely versatile and powerful at the same time. Certainly not the worst combination. If you check it on Google trends (and compare it to other programming languages), you'll see that it's very popular these days.

It's being used by almost any important company - be that Google, Amazon or Facebook. It's used to run web applications, scripts, desktop programs and machine learning algorithms. This course sets the basics for all these use-cases!

What's in the course?

Great question! Here's a brief summary:

  • A summary of Python and the Blockchain technology
  • All the base Python syntax you need to know (variables, operators, functions, ...)
  • Loops and conditional statements
  • More complex data structures like tuples or dictionaries
  • A closer look at built-in functions and the standard library Python ships with
  • String manipulation
  • How to work with files
  • Error handling
  • Debugging
  • Object-oriented programming with classes and inheritance
  • Internal & external modules (packages)
  • How to spin up an Http server with the Flask package
  • Handling Http requests (sending & receiving)
  • And more!

Is this course for you?

It's for you if ...

  • You want to get into programming => Python is a great "first language" since it's easy to learn and very versatile
  • You want to broaden your horizon => Are you a web developer? Want to learn something new? Here you go!
  • You're interested in Python for web development => This course will teach you Python in general but there are two modules where we'll also dive into web development a bit
  • You're interested in the Blockchain technology => You'll learn the core concepts of it as a side-effect of this course!
  • You know Python but want to practice it => The course project is challenging and taken from real-life - there probably is no better practice

Course content

Section 1Getting Started

  • Introduction
    1:51
  • What is Python?
    5:07
  • Setting Up Python
    3:11
  • Writing our First Python Code
    5:05
  • Join our Online Learning Community
    1:00
  • What is the Blockchain?
    6:48
  • Course Outline
    4:41
  • Python Alternatives
    3:58
  • Understanding the Python Versions
    2:22
  • How To Get The Most Out Of This Course
    3:27
  • Useful Resources & Links
    1:00

Section 2Diving Into the Basics of Python

  • Module Introduction
    2:16
  • Understanding the REPL and Data Types
    4:25
  • Working with VariablesPremium
    4:46
  • Working with NumbersPremium
    5:36
  • Using OperatorsPremium
    3:48
  • Understanding a "Special" Behaviour when Working with NumbersPremium
    3:35
  • Working with StringsPremium
    2:18
  • Working with ListsPremium
    5:09
  • Adding & Removing List ItemsPremium
    3:02
  • Preparing the Blockchain - The TheoryPremium
    2:02
  • Installing our IDEPremium
    5:17
  • Using Functions to Add List ItemsPremium
    6:45
  • Accessing the Last List ItemPremium
    3:24
  • Adding Arguments to FunctionsPremium
    2:36
  • Understanding the "return" KeywordPremium
    3:57
  • Using Default ArgumentsPremium
    4:06
  • Working with Keyword ArgumentsPremium
    2:59
  • Using the "input" FunctionPremium
    3:00
  • Avoiding Repetitive Code ExecutionPremium
    2:06
  • Understanding the Variable ScopePremium
    6:49
  • Exploring the Official DocumentationPremium
    2:25
  • Adding Comments and Doc StringsPremium
    4:20
  • Structuring Multi Line Code in PythonPremium
    1:56
  • Assignment - Basics (Problem)Premium
    1:34
  • Assignment - Basics (Solution)Premium
    11:24
  • Wrap UpPremium
    3:28
  • Useful Resources & LinksPremium
    1:00

Section 3Working with Loops & Conditionals

  • Module IntroductionPremium
    1:38
  • Understanding Loops - TheoryPremium
    2:55
  • Creating a "for" LoopPremium
    3:02
  • Creating a "while" LoopPremium
    3:33
  • Closing the REPLPremium
    1:00
  • Understanding Conditionals - TheoryPremium
    2:01
  • Adding "if-else" to our BlockchainPremium
    7:45
  • Working with "elif"Premium
    3:43
  • Understanding "break" & "continue"Premium
    3:31
  • Improving our Code with Loops & ConditionalsPremium
    6:39
  • Understanding Boolean Operators - "is" & "in"Premium
    3:37
  • The "not" KeywordPremium
    1:17
  • Understanding "and" and "or"Premium
    2:26
  • Grouping ConditionalsPremium
    3:22
  • What About "switch" in Python?Premium
    0:41
  • Verifying our BlockchainPremium
    13:10
  • Blockchain Theory: Understanding Blockchain VerificationPremium
    1:00
  • Using Conditions inside the "while" LoopPremium
    1:56
  • Using "else" in LoopsPremium
    2:07
  • Adding the "range" FunctionPremium
    7:09
  • Assignment - Loops & Conditionals (Problem)Premium
    2:50
  • Assignment - Loops & Conditionals (Solution)Premium
    7:52
  • Wrap UpPremium
    3:11
  • Useful Resources & LinksPremium
    1:00

Section 4Understanding Complex Data Structures

  • Module IntroductionPremium
    2:50
  • Understanding the Required Data Structure for our BlockchainPremium
    7:03
  • Working with IterablesPremium
    5:01
  • Choosing the Right DatastructurePremium
    2:55
  • Transactions with Dictionaries & TuplesPremium
    7:46
  • Blockchain Theory: Understanding TransactionsPremium
    1:00
  • Unpacking the TuplePremium
    3:20
  • Mining BlocksPremium
    6:16
  • Hashing Previous BlocksPremium
    6:23
  • Understanding List ComprehensionsPremium
    5:48
  • And What are Dict Comprehensions?Premium
    1:39
  • Combining List Comprehensions & "if"Premium
    2:53
  • Improving the Blockchain Validation LogicPremium
    8:20
  • Managing a List of Participants in the BlockchainPremium
    3:33
  • Calculating BalancesPremium
    7:46
  • Rewarding the Miners of our BlockchainPremium
    3:23
  • Verifying TransactionsPremium
    5:45
  • Understanding Reference vs Value CopyingPremium
    7:07
  • Working with the Range SelectorPremium
    5:42
  • Understanding Shallow vs Deep CopiesPremium
    2:42
  • Comparing "is" & "=="Premium
    1:36
  • Diving Deeper Into Iterable MethodsPremium
    7:27
  • Understanding the "all" & "any" FunctionsPremium
    7:35
  • Comparing IterablesPremium
    6:46
  • Assignment - Complex Datastructures (Problem)Premium
    1:27
  • Assignment - Complex Datastructures (Solution)Premium
    7:17
  • Wrap UpPremium
    3:17
  • Useful Resources & LinksPremium
    1:00

Section 5Working with Functions & Strings

  • Module IntroductionPremium
    1:30
  • Comparing Strings & ListsPremium
    3:57
  • Understanding the "format" MethodPremium
    8:11
  • Escaping CharactersPremium
    1:47
  • Formatting Strings Conveniently with "f"Premium
    1:27
  • Adding String Formatting to our ProjectPremium
    2:00
  • Understanding the "map" FunctionPremium
    2:53
  • Working with Lambda FunctionsPremium
    2:13
  • Reducing ListsPremium
    7:40
  • Unpacking Function ArgumentsPremium
    6:32
  • Assignment - Functions & Strings (Problem)Premium
    2:13
  • Assignment - Functions & Strings (Solution))Premium
    5:07
  • Fixing a BugPremium
    4:13
  • Wrap UpPremium
    1:30
  • Useful Resources & LinksPremium
    1:00

Section 6Working with the Python Standard Library

  • Module IntroductionPremium
    1:42
  • Exploring the Python Standard LibraryPremium
    2:12
  • Importing Packages - TheoryPremium
    4:18
  • Importing "hashlib" to Create a Unique HashPremium
    7:14
  • Using Other Import SyntaxesPremium
    1:47
  • The "Proof of Work"Premium
    6:53
  • Blockchain Theory: Understanding the "Proof of Work"Premium
    1:00
  • Adding the Proof of Work to our BlockchainPremium
    5:48
  • Including the Proof of Work in our Mining FunctionPremium
    7:49
  • Fixing a Hash Order FaultPremium
    6:22
  • Splitting Up our CodePremium
    4:33
  • Assignment -The Standard Library (Problem)Premium
    1:41
  • Assignment -The Standard Library (Solution)Premium
    3:46
  • Wrap UpPremium
    2:02
  • Useful Resources & LinksPremium
    1:00

Section 7Working with Files

  • Module IntroductionPremium
    1:44
  • Handling File AccessPremium
    5:44
  • Reading Data From a FilePremium
    2:33
  • Reading Multi-Line ContentPremium
    5:52
  • Using the "with" Block StatementPremium
    2:57
  • Adding File Access to our BlockchainPremium
    8:39
  • Converting Strings Into Python ObjectsPremium
    16:01
  • Storing Data with PicklePremium
    6:05
  • Comparing Pickle & JSONPremium
    1:05
  • Changing the Project Back to JSONPremium
    2:30
  • Why we need Proper Error HandlingPremium
    0:46
  • Assignment - Working with Files (Problem)Premium
    1:49
  • Assignment - Working with Files (Solution)Premium
    10:21
  • Wrap UpPremium
    1:17
  • Useful Resources & LinksPremium
    1:00

Section 8Handling Errors

  • Module IntroductionPremium
    0:57
  • Finding Logical Errors with the DebuggerPremium
    5:53
  • Finding Syntax ErrorsPremium
    1:40
  • Using "try" to Find Runtime ErrorsPremium
    4:33
  • Which Errors Should you Handle?Premium
    3:01
  • Adding Error Handlers to our BlockchainPremium
    2:32
  • Handling Empty File ErrorsPremium
    1:00
  • Wrap UpPremium
    1:49
  • Useful Resources & LinksPremium
    1:00

Section 9Object Oriented Programming

  • Module IntroductionPremium
    1:12
  • What is Object Oriented Programming?Premium
    2:12
  • Understanding ClassesPremium
    1:24
  • Creating a ClassPremium
    5:09
  • Comparing Classes, Instances & DictionariesPremium
    2:44
  • Understanding Class AttributesPremium
    3:37
  • Constructor & Instance AttributesPremium
    4:20
  • Printing Classes with Special MethodsPremium
    6:04
  • Private & Public AttributesPremium
    4:39
  • Understanding InheritancePremium
    8:46
  • Planning Blockchain ClassesPremium
    1:32
  • Adding a "Block" Class to the BlockchainAdding a "Block" Class to the BlockchainPremium
    11:06
  • An Issue with Default ArgumentsPremium
    1:00
  • Saving Custom Class Objects via .jsonPremium
    4:49
  • Adding a "Transaction" ClassPremium
    17:46
  • Inheritance in ActionPremium
    5:43
  • Adding a "Verification" Helper ClassPremium
    10:03
  • Initialising the "Node" ClassPremium
    4:51
  • Turning the Blockchain Into a ClassPremium
    7:30
  • Adding a "Node" ClassPremium
    11:11
  • Understanding "Instance" vs "Class" vs "Static Methods" & "Attributes"Premium
    3:39
  • Using "Static" & "Class" Methods on the "Verification" ClassPremium
    3:44
  • Using Private Attributes in the BlockchainPremium
    3:43
  • Properties vs AttributesPremium
    5:20
  • Assignment - Object Oriented Programming (Problem)Premium
    1:45
  • Assignment - Object Oriented Programming (Solution)Premium
    9:44
  • Wrap UpPremium
    2:15
  • Useful Resources & LinksPremium
    1:00

Section 10Modules

  • Module IntroductionPremium
    1:41
  • Creating Packages - Module BundlesPremium
    4:40
  • The "pycache" FolderPremium
    0:43
  • Module DocstringsPremium
    0:51
  • Controlling ExportsPremium
    5:36
  • Understanding Execution Context & "__name__"Premium
    4:11
  • Why we Need a Private & Public Key Transaction ProtectionPremium
    4:25
  • Using Anaconda to Install Third Party PackagesPremium
    6:23
  • Using Virtual EnvironmentsPremium
    1:00
  • Use Pycryptodome instead of PyCryptoPremium
    1:00
  • Generating Keys with a Third Party PackagePremium
    6:21
  • Connecting the Node & the WalletPremium
    6:15
  • Generating Keys on the NodePremium
    4:06
  • Saving & Loading Keys to FilesPremium
    8:24
  • Creating Transaction SignaturesPremium
    6:24
  • Adding a Signature to our TransactionsPremium
    2:42
  • Verifying SignaturesPremium
    6:49
  • Improving the Verification LogicPremium
    5:41
  • Wrap UpPremium
    1:21
  • Useful Resources & LinksPremium
    1:00

Section 11Adding HTTP with Flask

  • Module IntroductionPremium
    2:04
  • HTTP Requests - The BasicsPremium
    5:40
  • Understanding API-Endpoints/ URLsPremium
    3:32
  • Data FormatsPremium
    3:18
  • Planning our APIPremium
    2:04
  • Setting Up our Environment with FlaskPremium
    10:08
  • Adding our First RoutePremium
    10:09
  • Installing PostmanPremium
    2:20
  • Adding a POST RequestPremium
    7:21
  • Setting Up Routes to Manage our WalletPremium
    8:23
  • Returning FundsPremium
    5:43
  • Adding TransactionsPremium
    11:26
  • Fetching Open TransactionsPremium
    3:14
  • Testing the Public KeyPremium
    1:46
  • Adding a User InterfacePremium
    2:41
  • Optional: Configuring our UI - Creating a WalletPremium
    13:17
  • Optional: Configuring our UI - Loading a Wallet and Adding Mining & TransactionsPremium
    11:58
  • Exploring our UIPremium
    2:45
  • Wrap UpPremium
    1:52
  • Useful Resources & LinksPremium
    1:00

Section 12The Node Network

  • Module IntroductionPremium
    1:42
  • Adding Node Management Methods to the BlockchainPremium
    7:18
  • Setting Up Routes to Add NodesPremium
    7:40
  • Adding a Remove Node RoutePremium
    5:17
  • Adding "get_Nodes" to get all NodesPremium
    1:19
  • Attaching a Node User InterfacePremium
    11:07
  • Running Multiple NodesPremium
    11:19
  • Sending Requests from within PythonPremium
    10:36
  • Broadcasting Transactions - Adding the Function & RoutePremium
    12:06
  • Broadcasting Transactions - Testing & Fixing ErrorsPremium
    5:51
  • Broadcasting New Blocks: Adding the Function & RoutePremium
    11:12
  • Broadcasting New Blocks: Informing the Peer NodesPremium
    9:53
  • Broadcasting Transactions: TestingPremium
    3:28
  • Solving ConflictsPremium
    5:32
  • Understanding ConsensusPremium
    3:28
  • Finding ConflictsPremium
    9:34
  • Implementing a Consensus AlgorithmPremium
    17:20
  • Testing ConsensusPremium
    5:49
  • Wrap UpPremium
    1:01
  • Useful Resources & LinksPremium
    1:00

Section 13Next Steps and Course Roundup

  • Module IntroductionPremium
    0:46
  • Don't Forget PEP 8Premium
    2:46
  • Using PEP 8Premium
    8:29
  • Using CommentsPremium
    1:01
  • Diving Deeper Into PythonPremium
    5:07
  • Improving the BlockchainPremium
    10:02
  • CongratulationsPremium
    0:57
  • Further LinksPremium
    1:00

Course instructor

Photo of Maximilian Schwarzmüller

Maximilian Schwarzmüller

As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.

The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.