- 01Environment Setup (what you'll need)
- 02Variables and print()
- 03Conditionals (if statements)
- 04Loops (for statements)
- 05Writing Your First Function
- 06Working with Lists
- 07Working with Dictionaries (dict)
- 08Loops (while statements)
- 09Working with Strings
- 10Introducing Classes (Object-Oriented Programming)
- 11Error Handling (try...except)
- 12List Comprehensions
- 13Generators and yield
- 14File Handling Basics
- 15The match Statement (Python's switch)
- 16The Conditional (Ternary) Expression
- 17Inheritance (Extending a Class)
- 18Writing Comments
- 19Logical Operators (and, or, not)
- 20Constants (values you agree not to change)
- 21Splitting and Joining Strings (split, join)
- 22Writing None-Safe Code
- 23Searching a List (in and finding the next match)
- 24Transforming a List with map()
- 25Two-Dimensional Lists (grid-shaped data)
- 26Writing a Custom Exception Class
- 27Default Arguments (initial parameter values)
- 28Working with Sets
- 29Checking Correctness with assert (your first step into testing)
- 30Higher-Order Functions (passing a function as an argument)
- 31Stacks and Queues (basic data structures)
- 32Type Conversion (casting) Basics
- 33Intro to Regular Expressions (pattern matching)
- 34The Binary Search Algorithm
- 35Building a Caesar Cipher (a character-shifting cipher)
- 36Understanding How Bubble Sort Works
- 37Building and Displaying Dates (basic year/month/day operations)
- 38Writing Multiple Test Cases Together
- 39Speeding Up Calculations with Memoization (caching)
- 40Normalizing Strings (strip, unifying case)
- 41Shallow Copy vs. Deep Copy
- 42Enum (Enumerated Types) Basics
- 43Flattening a List
- 44Reversing a String and Checking for Palindromes
- 45Pairing Up Two Lists (the zip operation)
- 46Rounding Numbers (floor, ceil, round)
- 47Multi-Line Strings (triple quotes)
- 48Functions That Return Multiple Values (tuples)
- 49Finding the GCD and LCM (the Euclidean algorithm)
- 50Formatting Numbers (padding digits, decimal places)
- 51Cleanup Logic with try/except/finally
- 52Writing Type-Agnostic Functions
- 53The with Statement (Context Managers) Basics
- 54Generating Random Numbers
- 55Bitwise Operators (AND, OR, XOR, shifts)
- 56Class Variables and @staticmethod Basics
- 57Waiting for a Fixed Amount of Time (time.sleep)
- 58Watch Out for Floating-Point Rounding Errors
- 59Type Hints Basics
- 60FizzBuzz (the classic practice problem)
- 61Checking Whether a Number Is Prime
- 62Set Operations (union, intersection, difference)
- 63Converting Number Bases (binary, hex)
- 64Checking Balanced Parentheses (an application of stacks)
- 65Checking Whether Two Words Are Anagrams
- 66Checking Whether a Year Is a Leap Year
- 67Converting Temperature (Celsius to Fahrenheit)
- 68Prime Factorization
- 69[Applied] Build a Household Budget Tool
Checking Whether a Year Is a Leap Year
This lesson covers the logic for determining leap years, so you can learn how to correctly translate a rule that looks simple but hides exceptions into code. It's written for anyone searching "Python leap year check".
A year is a leap year if it's divisible by 4 but not by 100, or if it's divisible by 400. This is a fundamental piece of logic commonly used in calendar and date-calculation programs. It's distinctive in that judging purely by "a multiple of 4" gives the wrong answer — a classic exercise for practicing correctly structured conditionals.
The sample code determines leap years with a single condition: (year % 4 == 0 and year % 100 != 0) or year % 400 == 0. Check the results: 2024 is a multiple of 4 and not a multiple of 100, so it's a leap year; 1900 is a multiple of 4 but also a multiple of 100 (and not a multiple of 400), so it's not.
A common beginner mistake is overlooking the exception for years divisible by 100. Implementing only the simple rule "divisible by 4 means leap year" incorrectly marks a year like 1900 as a leap year. This is good practice for correctly translating a "simple-looking rule with hidden exceptions" into code.
This is foundational knowledge behind any program that works with dates, like a calendar app or age calculator. Subtle spec details like leap years are exactly the kind of thing you always need to keep in mind when building a real calendar application.
💡 The Python engine may take a few seconds to load the first time you run code.
