The if statement
An if statement runs a block of code only when a condition is true. The block is everything indented beneath the colon:
temperature = 31
if temperature > 30:
print("It is hot today.")
print("Drink water.")
print("This line always runs.")Indentation is not decoration in Python — it is the syntax. Use four spaces (the app's editor inserts them automatically) and be consistent. Mixing tabs and spaces raises IndentationError.
else and elif
score = int(input("Score: "))
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "F"
print("Grade:", grade)Python checks each condition from the top and runs the first block that is true, then skips the rest. Order matters: if you tested score >= 70 first, a score of 95 would get a C.
Combining conditions
age = 16
with_adult = True
if age >= 18 or (age >= 13 and with_adult):
print("Admitted")
else:
print("Not admitted")
username = ""
if not username:
print("Username is required")
fruit = "kiwi"
if fruit in ("apple", "kiwi", "pear"):
print("We stock that")Nested if statements
logged_in = True
is_admin = False
if logged_in:
if is_admin:
print("Show admin panel")
else:
print("Show user dashboard")
else:
print("Show login page")Nesting works but gets hard to read past two levels. Often you can flatten it with and, or by returning early from a function (see functions).
The conditional expression (ternary)
n = 7
parity = "even" if n % 2 == 0 else "odd"
print(n, "is", parity)
items = 1
print(f"{items} item{'s' if items != 1 else ''}")Use it for short, single-value choices. If either branch needs more than one expression, write a full if/else.
match statement (Python 3.10+)
For comparing one value against many patterns, match is cleaner than a long elif chain:
command = "stop"
match command:
case "start" | "go":
print("Starting")
case "stop":
print("Stopping")
case _:
print("Unknown command")match can also destructure lists, tuples and dictionaries, which becomes useful once you work with structured data.
Practice exercise
Write a program that asks for a year and prints whether it is a leap year. A year is a leap year if it is divisible by 4, except years divisible by 100, unless they are also divisible by 400.
year = int(input("Year: "))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print(year, "is a leap year")
else:
print(year, "is not a leap year")The Coding Python app has a challenge like this that checks your answer automatically. Next up: loops.
Frequently asked questions
What is the difference between elif and else in Python?
elif tests another condition and runs only if it is true; else has no condition and runs when every previous test failed. You can have many elif branches but only one else.
Why do I get IndentationError?
The lines inside an if block must be indented by the same amount, and the if line must end with a colon. Mixing tabs and spaces is the usual cause; use four spaces everywhere.
Does Python have a switch statement?
Python 3.10 added match/case, which covers what switch does in other languages and also supports pattern matching on structure.
Can I write an if statement on one line?
Yes, for simple cases: x = 'yes' if cond else 'no' is a conditional expression. Multi-statement blocks should use the normal indented form.