The
Python Workshop

Built by a team of experts to help you unlock your next promotion, reboot your career, or kick off your latest side project.

Get Started Today

You'll be up and running with Python in no time at all.

  • $34.99

    $34.99The Python Workshop

    Unlock full, unlimited access and get started right away!
    Buy Now

Engineered for Success

Nobody likes going through hundreds of pages of dry theory, or struggling with uninteresting examples that don’t compile. We've got you covered. Any time, any device.

  • Learn by doing real-world development, supported by detailed step-by-step examples, screencasts and knowledge checks.

  • Become a verified practitioner, building your credentials by completing exercises, activities and assessment checks.

  • Manage your learning based on your personal schedule, with content structured to easily let you pause and progress at will.

Learn By Doing

You already know you want to learn Python, and a smarter way to learn Python 3 is to learn by doing.

The Python Workshop focuses on building up your practical skills so that you can work towards building your skills as a data scientist, write scripts that help automate your life and save you time, or even create your own games and desktop applications.

On Your Terms

Build up and reinforce key skills in a way that feels rewarding.

You won't have to sit through any unnecessary theory. If you're short on time you can jump into a single exercise each day or spend an entire weekend learning about scripting. It's your choice.

An Ideal Start

Fast-paced and direct, The Python Workshop is the ideal companion for newcomers.

You'll build and iterate on your code like a software developer, learning along the way. This process means that you'll find that your new skills stick, embedded as best practice. A solid foundation for the years ahead.

Begin Your Journey

A simple, straightforward and pain-free way to learn Python.

  • $34.99

    $34.99The Python Workshop

    Unlock full, unlimited access and get started right away!
    Buy Now

Everything You Need

Every Workshop includes free access to a whole host of bonus downloadable content. No hidden fees or annoying DRM policies. Just pure, top-quality content.

  • Download a text-only version of the entire Workshop. Perfect for those moments where your WiFi connection is a bit spotty. Available as PDF or EPUB, and always DRM-free.

  • Save any of our step-by-step screencasts directly from our interactive player. You can rest easy knowing that you'll always have a live example to hand.

Get Build-Ready

Every Workshop includes a whole host of features that work together to help you get the job done. You’ll be ready to tackle real-world development in no time.
  • Hack Your Brain

    We've applied the latest pedagogical techniques to deliver a truly multimodal experience. It'll keep you engaged and make the learning stick. It's science!

  • Build Real Things

    Nobody likes wasting their time. We cut right to the action and get you building real skills that real, working developers value. The perfect approach for a career move.

  • Learn From Experts

    We've paired technical experts with top editorial talent. They've worked hard to deliver you the maximum impact for each minute you spend learning. It's our secret sauce.

  • Verify Your Credentials

    Prove yourself by taking the final challenge. We use the blockchain to cryptographically certify your newly vetted skill. It's perfect for sharing on social media. Hello LinkedIn!

  • Receive Free Updates

    Technology keeps changing, and so do we. We keep versions updated independently, so you'll always have access. No more worrying about third-party release cycles.

  • Access Anywhere

    All you need is an internet connection. We've built every course so that it works on desktop and mobile, giving you options that fit within your schedule.

What's Inside

From A to Z, we've got you covered!

  • 1. Vital Python: Math, Strings, Conditionals, and Loops

  • 2. Python Structures

    • Overview
    • The Power of Lists
    • Exercise 21: Working with Python Lists
    • Exercise 21: Working with Python Lists
    • Matrices as Nested Lists
    • Exercise 22: Using a Nested List to Store Data from a Matrix
    • Exercise 22: Using a Nested List to Store Data from a Matrix
    • Activity 6: Using a Nested List to Store Employee Data
    • Exercise 23: Implementing Matrix Operations Addition and Subtraction
    • Exercise 23: Implementing Matrix Operations Addition and Subtraction
    • Exercise 24: Implementing Matrix Operations Multiplication
    • Exercise 24: Implementing Matrix Operations Multiplication
    • Exercise 25: Basic List Operations
    • Exercise 25: Basic List Operations
    • Exercise 26: Accessing an Item from Shopping List Data
    • Exercise 26: Accessing an Item from Shopping List Data
    • Exercise 27: Adding Items to Our Shopping List
    • Exercise 27: Adding Items to Our Shopping List
    • Dictionary Keys and Values
    • Exercise 28: Using a Dictionary to Store a Movie Record
    • Exercise 28: Using a Dictionary to Store a Movie Record
    • Activity 7: Storing Company Employee Table Data Using a List and a Dictionary
    • Exercise 29: Using the zip() Method to Manipulate Dictionaries
    • Exercise 29: Using the zip() Method to Manipulate Dictionaries
    • Exercise 30: Accessing a Dictionary Using Dictionary Methods
    • Exercise 30: Accessing a Dictionary Using Dictionary Methods
    • Exercise 31: Exploring Tuple Properties in Our Shopping List
    • Exercise 31: Exploring Tuple Properties in Our Shopping List
    • Exercise 32: Using Sets in Python
    • Exercise 32: Using Sets in Python
    • Exercise 33: Implementing Set Operations
    • Exercise 33: Implementing Set Operations
    • Choosing Types
    • Summary
    • Quiz 2
  • 3. Executing Python: Programs, Algorithms, and Functions

    • Overview
    • Exercise 34: Writing and Executing Our First Script
    • Exercise 34: Writing and Executing our First Script
    • Exercise 35: Writing and Importing Our First Module
    • Exercise 35: Writing and Importing our First Module
    • Shebangs in Ubuntu
    • Exercise 36: Adding a Docstring to my_module.py
    • Exercise 36: Adding a Docstring to my_module.py
    • Imports
    • Exercise 37: Finding the System Date
    • Exercise 37: Finding the System Date
    • The if __name__ == "__main__" Statement
    • Activity 8: What's the Time?
    • Exercise 38: The Maximum Number
    • Exercise 38: The Maximum Number
    • Time Complexity
    • Sorting Algorithms
    • Exercise 39: Using Bubble Sort in Python
    • Exercise 39: Using Bubble Sort in Python
    • Exercise 40: Linear Search in Python
    • Exercise 40: Linear Search in Python
    • Exercise 41: Binary Search in Python
    • Exercise 41: Binary Search in Python
    • Exercise 42: Defining and Calling the Function in Shell
    • Exercise 42: Defining and Calling the Function in Shell
    • Exercise 43: Defining and Calling the Function in Python Script
    • Exercise 43: Defining and Calling the Function in Python Script
    • Exercise 44: Importing and Calling the Function from the Shell
    • Exercise 44: Importing and Calling the Function from the Shell
    • Positional Arguments
    • Exercise 45: Defining the Function with Keyword Arguments
    • Exercise 45: Defining the Function with Keyword Arguments
    • Exercise 46: Defining the Function with Positional and Keyword Arguments
    • Exercise 46: Defining the Function with Positional and Keyword Arguments
    • Exercise 47: Using **kwargs
    • Exercise 47: Using **kwargs
    • Activity 9: Formatting Customer Names
    • Iterative Functions
    • Exercise 48: A Simple Function with a for Loop
    • Exercise 48: A Simple Function with a For Loop
    • Exercise 49: Exiting the Function During the for Loop
    • Exercise 49: Exiting the Function During the For Loop
    • Activity 10: The Fibonacci Function with an Iteration
    • Recursive Functions
    • Exercise 50: Recursive Countdown
    • Exercise 50: Recursive Countdown
    • Exercise 51: Factorials with Iteration and Recursion
    • Exercise 51: Factorials with Iteration and Recursion
    • Activity 11: The Fibonacci Function with Recursion
    • Exercise 52: Summing Integers
    • Exercise 52: Summing Integers
    • Exercise 53: Timing Your Code
    • Exercise 53: Timing Your Code
    • Activity 12: The Fibonacci Function with Dynamic Programming
    • Helper Functions
    • Exercise 54: Helper Currency Conversion
    • Exercise 54: Helper Currency Conversion
    • Variable Scope
    • Exercise 55: The First Item in a List
    • Exercise 55: The First Item in a List
    • Exercise 56: Mapping with a Logistic Transform
    • Exercise 56: Mapping with a Logistic Transform
    • Exercise 57: Using the Filter Lambda
    • Exercise 57: Using the Filter Lambda
    • Sorting with Lambda Functions
    • Summary
    • Quiz 3
  • 4. Extending Python, Files, Errors, and Graphs

    • Overview
    • Exercise 58: Reading a Text File Using Python
    • Exercise 58: Reading a Text File Using Python
    • Exercise 59: Reading Partial Content from a Text File
    • Exercise 59: Reading Partial Content from a Text File
    • Writing Files
    • Exercise 60: Creating and Writing Content to Files to Record the Date and Time in a Text File
    • Exercise 60: Creating and Writing Content to Files to Record the Date and Time in a Text File
    • Preparing for Debugging (Defensive Code)
    • Exercise 61: Working with Incorrect Parameters to Find the Average Using Assert with Functions
    • Exercise 61: Working with Incorrect Parameters to Find the Average Using Assert with Functions
    • Plotting Techniques
    • Exercise 62: Drawing a Scatter Plot to Study the Data between Ice Cream Sales versus Temperature
    • Exercise 62: Drawing a Scatter Plot to Study the Data between Ice Cream Sales versus Temperature
    • Exercise 63: Drawing a Line Chart to Find the Growth in Stock Prices
    • Exercise 63: Drawing a Line Chart to Find the Growth in Stock Prices
    • Exercise 64: Plotting Bar Plots to Grade Students
    • Exercise 64: Plotting Bar Plots to Grade Students
    • Exercise 65: Creating a Pie Chart to Visualize the Number of Votes in a School
    • Exercise 65: Creating a Pie Chart to Visualize the Number of Votes in a School
    • Exercise 66: Generating a Heatmap to Visualize the Grades of Students
    • Exercise 66: Generating a Heatmap to Visualize the Grades of Students
    • Exercise 67: Generating a Density Plot to Visualize the Score of Students
    • Exercise 67: Generating a Density Plot to Visualize the Score of Students
    • Exercise 68: Creating a Contour Plot
    • Exercise 68: Creating a Contour Plot
    • Extending Graphs
    • Exercise 69: Generating 3D plots to Plot a Sine Wave
    • Exercise 69: Generating 3D plots to Plot a Sine Wave
    • The Don'ts of Plotting Graphs
    • Activity 13: Visualizing the Titanic Dataset Using a Pie Chart and Bar Plots
    • Summary
    • Quiz 4
  • 5. Constructing Python: Classes and Methods

    • Overview
    • Classes and Objects
    • Exercise 70: Exploring Strings
    • Exercise 70: Exploring Strings
    • Defining Classes
    • Exercise 71: Creating a Pet Class
    • Exercise 71: Creating a Pet Class
    • The __init__ method
    • Exercise 72: Creating a Circle Class
    • Exercise 72: Creating a Circle Class
    • Keyword Arguments
    • Exercise 73: The Country Class with Keyword Arguments
    • Exercise 73: The Country Class with Keyword Arguments
    • Methods
    • Exercise 74: Adding an Instance Method to Our Pet Class
    • Exercise 74: Adding an Instance Method to Our Pet Class
    • Adding Arguments to Instance Methods
    • Exercise 75: Computing the Size of Our Country
    • Exercise 75: Computing the Size of Our Country
    • The __str__ method
    • Exercise 76: Adding an __str__ Method to the Country Class
    • Exercise 76: Adding a __str__ Method to the Country Class
    • Static Methods
    • Exercise 77: Refactoring Instance Methods Using a Static Method
    • Exercise 77: Refactoring Instance Methods Using a Static Method
    • Class Methods
    • Exercise 78: Extending Our Pet Class with Class Methods
    • Exercise 78: Extending Our Pet Class with Class Methods
    • Properties
    • Exercise 79: The Full Name Property
    • Exercise 79: The Full Name Property
    • The Setter Method
    • Exercise 80: Writing a Setter Method
    • Exercise 80: Writing a Setter Method
    • Validation via the Setter Method
    • Inheritance
    • Exercise 81: Inheriting from the Person Class
    • Exercise 81: Inheriting from the Person Class
    • Exercise 82: Sub-Classing the datetime.date Class
    • Exercise 82: Sub-Classing the datetime.date Class
    • Overriding Methods
    • Calling the Parent Method with super()
    • Exercise 83: Overriding Methods Using super()
    • Exercise 83: Overriding Methods Using super()
    • Multiple Inheritance
    • Exercise 84: Creating a Consultation Appointment System
    • Exercise 84: Creating a Consultation Appointment System
    • Method Resolution Order
    • Activity 14: Creating Classes and Inheriting from a Parent Class
    • Summary
    • Quiz 5
  • 6. The Standard Library

    • Overview
    • The Importance of the Standard Library
    • Exercise 85: Using the dataclass Module
    • Exercise 85: Using the dataclass Module
    • Exercise 86: Extending the echo.py Example
    • Exercise 86: Extending the echo.py Example
    • Dates and Times
    • Exercise 87: Comparing datetime across Time Zones
    • Exercise 87: Comparing datetime across Time Zones
    • Exercise 88: Calculating the Time Delta between Two datetime Objects
    • Exercise 88: Calculating the Time Delta between Two datetime Objects
    • Exercise 89: Calculating the Unix Epoch Time
    • Exercise 89: Calculating the Unix Epoch Time
    • Activity 15: Calculating the Time Elapsed to Run a Loop
    • Exercise 90: Inspecting the Current Process Information
    • Exercise 90: Inspecting the Current Process Information
    • Using pathlib
    • Exercise 91: Using the glob Pattern to List Files within a Directory
    • Exercise 91: Using the glob Pattern to List Files within a Directory
    • Using the subprocess Module
    • Exercise 92: Customizing Child Processes with env vars
    • Exercise 92: Customizing Child Processes with env vars
    • Activity 16: Testing Python Code
    • Logging
    • Exercise 93: Using a logger Object
    • Exercise 93: Using a logger Object
    • Logging in warning, error, and fatal Categories
    • Exercise 94: Configuring the Logging Stack
    • Exercise 94: Configuring the Logging Stack
    • Exercise 95: Counting Words in a Text Document
    • Exercise 95: Counting Words in a Text Document
    • defaultdict
    • Exercise 96: Refactoring Code with defaultdict
    • Exercise 96: Refactoring Code with defaultdict
    • ChainMap
    • Exercise 97: Using lru_cache to Speed Up Our Code
    • Exercise 97: Using lru_cache to Speed Up Our Code
    • Partial
    • Exercise 98: Creating a print Function That Writes to stderr
    • Exercise 98: Creating a print Function That Writes to stderr
    • Activity 17: Using partial on class Methods
    • Summary
    • Quiz 6
  • 7. Becoming Pythonic

    • Overview
    • Exercise 99: Introducing List Comprehensions
    • Exercise 99: Introducing List Comprehensions
    • Exercise 100: Using Multiple Input Lists
    • Exercise 100: Using Multiple Input Lists
    • Activity 18: Building a Chess Tournament
    • Exercise 101: Using Set Comprehensions
    • Exercise 101: Using Set Comprehensions
    • Exercise 102: Using Dictionary Comprehensions
    • Exercise 102: Using Dictionary Comprehensions
    • Activity 19: Building a Scorecard Using Dictionary Comprehensions and Multiple Lists
    • Exercise 103: Adopting a Default Dict
    • Exercise 103: Adopting a Default Dict
    • Exercise 104: The Simplest Iterator
    • Exercise 104: The Simplest Iterator
    • Exercise 105: A Custom Iterator
    • Exercise 105: A Custom Iterator
    • Exercise 106: Controlling the Iteration
    • Exercise 106: Controlling the Iteration
    • Exercise 107: Using Infinite Sequences and takewhile
    • Exercise 107: Using Infinite Sequences and takewhile
    • Exercise 108: Turning a Finite Sequence into an Infinite One, and Back Again
    • Exercise 108: Turning a Finite Sequence into an Infinite One, and Back Again
    • Exercise 109: Generating a Sieve
    • Exercise 109: Generating a Sieve
    • Activity 20: Using Random Numbers to Find the Value of Pi
    • Exercise 110: Matching Text with Regular Expressions
    • Exercise 110: Matching Text with Regular Expressions
    • Exercise 111: Using Regular Expressions to Replace Text
    • Exercise 111: Using Regular Expressions to Replace Text
    • Activity 21: Regular Expressions
    • Summary
    • Quiz 7
  • 8. Software Development

    • Overview
    • Debugging
    • Exercise 112: Debugging a Salary Calculator
    • Exercise 112: Debugging a Salary Calculator
    • Activity 22: Debugging Sample Python Code for an Application
    • Automated Testing
    • Exercise 113: Checking Sample Code with Unit Testing
    • Exercise 113: Checking Sample Code with Unit Testing
    • Writing a Test with pytest
    • Creating a PIP Package
    • Exercise 114: Creating a Distribution That Includes Multiple Files within a Package
    • Exercise 114: Creating a Distribution That Includes Multiple Files within a Package
    • Adding More Information to Your Package
    • Creating Documentation the Easy Way
    • Exercise 115: Documenting a Divisible Code File
    • Exercise 115: Documenting a Divisible Code File
    • More Complex Documentation
    • Source Management
    • Exercise 116: Making a Change in CPython Using git
    • Exercise 116: Making a Change in CPython Using git
    • Summary
    • Quiz 8
  • 9. Practical Python: Advanced Topics

    • Overview
    • Developing Collaboratively
    • Exercise 117: Writing Python on GitHub as a Team
    • Exercise 117: Writing Python on GitHub as a Team
    • Dependency Management
    • Exercise 118: Creating and Setting Up a conda Virtual Environment to Install numpy and pandas
    • Exercise 118: Creating and Setting Up a conda Virtual Environment to Install numpy and pandas
    • Exercise 119: Sharing Environments between a conda Server and Your Local System
    • Exercise 119: Sharing Environments between a conda Server and Your Local System
    • Deploying Code into Production
    • Exercise 120: Dockerizing Your Fizzbuzz Tool
    • Exercise 120: Dockerizing Your Fizzbuzz Tool
    • Multiprocessing
    • Exercise 121: Working with execnet to Execute a Simple Python Squaring
    • Exercise 121: Working with execnet to Execute a Simple Python Squaring
    • Exercise 122: Using the Multiprocessing Package to Execute a Simple Python Program
    • Exercise 122: Using the Multiprocessing Package to Execute a Simple Python Program
    • Exercise 123: Using the Threading Package
    • Exercise 123: Using the Threading Package
    • Parsing Command-Line Arguments in Scripts
    • Exercise 124: Introducing argparse to Accept Input from the User
    • Exercise 124: Introducing argparse to Accept Input from the User
    • Exercise 125: Using Positional Arguments to Accept Source and Destination Inputs from a User
    • Exercise 125: Using Positional Arguments to Accept Source and Destination Inputs from a User
    • Performance and Profiling
    • Exercise 126: Using PyPy to Find the Time to Get a List of Prime Numbers
    • Exercise 126: Using PyPy to Find the Time to Get a List of Prime Numbers
    • Exercise 127: Adopting Cython to Find the Time Taken to get a List of Prime Numbers
    • Exercise 127: Adopting Cython to Find the Time Taken to get a List of Prime Numbers
    • Profiling
    • Activity 23: Generating a List of Random Numbers in a Python Virtual Environment
    • Summary
    • Quiz 9
  • 10. Data Analytics with pandas and NumPy

    • Overview
    • Exercise 128: Converting Lists to NumPy Arrays
    • Exercise 128: Converting Lists to NumPy Arrays
    • Exercise 129: Calculating the Mean of the Test Score
    • Exercise 129: Calculating the Mean of the Test Score
    • Exercise 130: Finding the Median from a Collection of Income Data
    • Exercise 130: Finding the Median from a Collection of Income Data
    • Exercise 131: Finding the Standard Deviation from Income Data
    • Exercise 131: Finding the Standard Deviation from Income Data
    • Exercise 132: Matrices
    • Exercise 132: Matrices
    • Computation Time for Large Matrices
    • Exercise 133: Creating an Array to Implement NumPy Computations
    • Exercise 133: Creating an Array to Implement NumPy Computations
    • Exercise 134: Using DataFrames to Manipulate Stored Student testscore Data
    • Exercise 134: Using DataFrames to Manipulate Stored Student testscore Data
    • Exercise 135: DataFrame Computations with the Student testscore Data
    • Exercise 135: DataFrame Computations with the Student testscore Data
    • Exercise 136: Computing DataFrames within DataFrames
    • Exercise 136: Computing DataFrames within DataFrames
    • Exercise 137: Concatenating and Finding the Mean with Null Values for Our testscore Data
    • Exercise 137: Concatenating and Finding the Mean with Null Values for Our testscore Data
    • Cast Column Types
    • Data
    • Exercise 138: Reading and Viewing the Boston Housing Dataset
    • Exercise 138: Reading and Viewing the Boston Housing Dataset
    • Exercise 139: Gaining Data Insights on the Boston Housing Dataset
    • Exercise 139: Gaining Data Insights on the Boston Housing Dataset
    • Exercise 140: Null Value Operations on the Dataset
    • Exercise 140: Null Value Operations on the Dataset
    • Replacing Null Values
    • Visual Analysis
    • Exercise 141: Creating a Histogram Using the Boston Housing Dataset
    • Exercise 141: Creating a Histogram Using the Boston Housing Dataset
    • Histogram Functions
    • Exercise 142: Creating a Scatter Plot for the Boston Housing Dataset
    • Exercise 142: Creating a Scatter Plot for the Boston Housing Dataset
    • Exercise 143: Correlation Values from the Dataset
    • Exercise 143: Correlation Values from the Dataset
    • Regression
    • Exercise 144: Box Plots
    • Exercise 144: Box Plots
    • Violin Plots
    • Activity 24: Data Analysis to Find the Outliers in Pay versus the Salary Report in the UK Statistics Dataset
    • Summary
    • Quiz 10
  • 11. Machine Learning

    • Overview
    • Introduction to Linear Regression
    • Exercise 145: Using Linear Regression to Predict the Accuracy of the Median Values of Our Dataset
    • Exercise 145: Using Linear Regression to Predict the Accuracy of the Median Values of Our Dataset
    • Linear Regression Function
    • Exercise 146: Using the cross_val_score Function to Get Accurate Results on the Dataset
    • Exercise 146: Using the cross_val_score Function to Get Accurate Results on the Dataset
    • Regularization: Ridge and Lasso
    • K-Nearest Neighbors, Decision Trees, and Random Forests
    • Exercise 147: Using K-Nearest Neighbors to Find the Median Value of the Dataset
    • Exercise 147: Using K-Nearest Neighbors to Find the Median Value of the Dataset
    • Exercise 148: K-Nearest Neighbors with GridSearchCV to Find the Optimal Number of Neighbors
    • Exercise 148: K-Nearest Neighbors with GridSearchCV to Find the Optimal Number of Neighbors
    • Decision Trees and Random Forests
    • Exercise 149: Decision Trees and Random Forests
    • Exercise 149: Decision Trees and Random Forests
    • Random Forest Hyperparameters
    • Exercise 150: Random Forest Tuned to Improve the Prediction on Our Dataset
    • Exercise 150: Random Forest Tuned to Improve the Prediction on Our Dataset
    • Classification Models
    • Exercise 151: Preparing the Pulsar Dataset and Checking for Null Values
    • Exercise 151: Preparing the Pulsar Dataset and Checking for Null Values
    • Logistic Regression
    • Exercise 152: Using Logistic Regression to Predict Data Accuracy
    • Exercise 152: Using Logistic Regression to Predict Data Accuracy
    • Other Classifiers
    • Exercise 153: Using GaussianNB, KneighborsClassifier, DecisionTreeClassifier, and RandomForestClassifier to Predict Accuracy in Our Dataset
    • Exercise 153: Using GaussianNB, KneighborsClassifier, DecisionTreeClassifier, and RandomForestClassifier to Predict Accuracy in Our Dataset
    • Exercise 154: Finding the Pulsar Percentage from the Dataset
    • Exercise 154: Finding the Pulsar Percentage from the Dataset
    • Exercise 155: Confusion Matrix and Classification Report for the Pulsar Dataset
    • Exercise 155: Confusion Matrix and Classification Report for the Pulsar Dataset
    • Boosting Methods
    • Exercise 156: Using AdaBoost to Predict the Best Optimal Values
    • Exercise 156: Using AdaBoost to Predict the Best Optimal Values
    • Activity 25: Using Machine Learning to Predict Customer Return Return Rate Accuracy
    • Summary
    • Quiz 11
  • Activity Solutions

    • Activity 1: Assigning Values to Variables
    • Activity 1: Assigning Values to Variables
    • Activity 2: Finding a Solution Using Pythagorean Theorem in Python
    • Activity 2: Finding a Solution Using Pythagorean Theorem in Python
    • Activity 3: Using the input() Function to Rate You Day
    • Activity 3: Using the input() Function to Rate You Day
    • Activity 4: Finding the Least Common Multiple (LCM)
    • Activity 4: Finding the Least Common Multiple (LCM)
    • Activity 5: Building Conversational Bots Using Python
    • Activity 5: Building Conversational Bots Using Python
    • Activity 6: Using a Nested List to Store Employee Data
    • Activity 6: Using a Nested List to Store Employee Data
    • Activity 7: Storing Company Employee Table Data Using a List and a Dictionary
    • Activity 7: Storing Company Employee Table Data Using a List and a Dictionary
    • Activity 8: What's the Time?
    • Activity 8: What's the Time?
    • Activity 9: Formatting Customer Names
    • Activity 9: Formatting Customer Names
    • Activity 10: The Fibonacci Function with an Iteration
    • Activity 10: The Fibonacci Function with an Iteration
    • Activity 11: The Fibonacci Function with Recursion
    • Activity 11: The Fibonacci Function with Recursion
    • Activity 12: The Fibonacci Function with Dynamic Programming
    • Activity 12: The Fibonacci Function with Dynamic Programming
    • Activity 13: Visualizing the Titanic Dataset Using a Pie Chart and Bar Plots
    • Activity 13: Visualizing the Titanic Dataset Using a Pie Chart and Bar Plots
    • Activity 14: Creating Classes and Inheriting from a Parent Class
    • Activity 14: Creating Classes and Inheriting from a Parent Class
    • Activity 15: Calculating the Time Elapsed to Run a Loop
    • Activity 15: Calculating the Time Elapsed to Run a Loop
    • Activity 16: Testing Python Code
    • Activity 16: Testing Python Code
    • Activity 17: Using partial on class Methods
    • Activity 17: Using partial on class Methods
    • Activity 18: Building a Chess Tournament
    • Activity 18: Building a Chess Tournament
    • Activity 19: Building a Scorecard Using Dictionary Comprehensions and Multiple Lists
    • Activity 19: Building a Scorecard Using Dictionary Comprehensions and Multiple Lists
    • Activity 20: Using Random Numbers to Find the Value of Pi
    • Activity 20: Using Random Numbers to Find the Value of Pi
    • Activity 21: Regular Expressions
    • Activity 21: Regular Expressions
    • Activity 22: Debugging Sample Python Code for an Application
    • Activity 22: Debugging Sample Python Code for an Application
    • Activity 23: Generating a List of Random Numbers in a Python Virtual Environment
    • Activity 23: Generating a List of Random Numbers in a Python Virtual Environment
    • Activity 24: Data Analysis to Find the Outliers in Pay versus the Salary Report in the UK Statistics Dataset
    • Activity 24: Data Analysis to Find the Outliers in Pay versus the Salary Report in the UK Statistics Dataset
    • Activity 25: Using Machine Learning to Predict Customer Return Return Rate Accuracy
    • Activity 25: Using Machine Learning to Predict Customer Return Return Rate Accuracy
  • Post-Course Assessment

    • Post-Course Assessment

Get Verified

Complete The Python Workshop to unlock your secure credential.

We seal a record of your certification on the public Bitcoin blockchain. This verifies your achievement and lets employers authenticate your status with Packt. Our credentials are easy to share, and are ideal for displaying on your LinkedIn profile.

Take A Step Forward

There has never been a better time to start learning Python.

  • $34.99

    $34.99The Python Workshop

    Unlock full, unlimited access and get started right away!
    Buy Now

Already Know Python?

Don't worry, we've got your back with other languages and frameworks too!

Show me my options!