1 Introduction
2 A Case for Puzzle-based Learning
2.1 Overcome the Knowledge Gap
2.2 Embrace the Eureka Moment
2.3 Divide and Conquer
2.4 Improve From Immediate Feedback
2.5 Measure Your Skills
2.6 Individualized Learning
2.7 Small is Beautiful
2.8 Active Beats Passive Learning
2.9 Make Code a First-class Citizen
2.10 What You See is All There is
3 The Elo Rating for Python
3.1 How to Use This Book
3.2 The Ideal Code Puzzle
3.3 How to Exploit the Power of Habits?
3.4 How to Test and Train Your Skills?
3.5 What Can This Book Do For You?
4 A Quick Overview of the Python Language
4.1 Keywords
4.2 Basic Data Types
4.3 Complex Data Types
4.4 Classes
4.5 Functions and Tricks
5 Fifty Code Puzzles
5.1 Hello World
5.2 Variables and Float Division
5.3 Basic Arithmetic Operations
5.4 Comments and Strings
5.5 Index and Concatenate Strings
5.6 List Indexing
5.7 Slicing in Strings
5.8 Integer Division
5.9 String Manipulation Operators
5.10 Implicit String Concatenation
5.11 Sum and Range Functions
5.12 Append Function for Lists
5.13 Overshoot Slicing
5.14 Modulo Operator
5.15 Branching Statements
5.16 Negative Indices
5.17 The For Loop
5.18 Functions and Naming
5.19 Concatenating Slices
5.20 Arbitrary Arguments
5.21 Indirect Recursion
5.22 String Slicing
5.23 Slice Assignment
5.24 Default Arguments
5.25 Slicing and the len() Function
5.26 Nested Lists
5.27 Clearing Sublists
5.28 The Fibonacci Series
5.29 The continue Statement and the Modulo Operator
5.30 Indexing Revisited and The Range Sequence
5.31 Searching in Sorted Matrix
5.32 Maximum Prot Algorithm
5.33 Bubble Sort Algorithm
5.34 Joining Strings
5.35 Arithmetic Calculations
5.36 Binary Search
5.37 Modifying Lists in Loops
5.38 The Lambda Function
5.39 Multi-line Strings and the New-line Character
5.40 Escaping
5.41 Fibonacci Arithmetic
5.42 Quicksort
5.43 Unpacking Keyword Arguments with Dictionaries
5.44 Infinity
5.45 Graph Traversal
5.46 Lexicographical Sorting
5.47 Chaining of Set Operations
5.48 Basic Set Operations
5.49 Simple Unicode Encryption
5.50 The Guess and Check Framework
6 Final Remarks