Bird
Raised Fist0
Pythonprogramming~10 mins

Python Block Structure and Indentation - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Python Block Structure and Indentation
Start
Read line
Check indentation
Same level?
YesAdd line to current block
Indent more?
YesStart new nested block
Indent less?
YesClose current block(s)
Repeat until code ends
End
Python reads each line and uses indentation to group lines into blocks. Indentation shows which lines belong together.
Execution Sample
Python
if True:
    print("Hello")
    if False:
        print("No")
print("Done")
This code shows how indentation groups print statements inside if blocks.
Execution Table
StepLineIndentation LevelActionOutput
1if True:0Start if block
2 print("Hello")1Inside if block, print HelloHello
3 if False:1Start nested if block
4 print("No")2Inside nested if block, condition False, skip print
5print("Done")0Outside all blocks, print DoneDone
6End of code-Finish execution
💡 Reached end of code, all blocks closed
Variable Tracker
VariableStartAfter Step 1After Step 3Final
Indentation Level0120
Current BlockNoneif Trueif False (nested)None
Key Moments - 3 Insights
Why does the print("No") line not run even though it is indented?
Because the nested if condition is False (see step 3 and 4 in execution_table), so the block inside it is skipped.
What happens when indentation goes back to zero at print("Done")?
It means the previous blocks ended, so this line runs outside all if blocks (see step 5).
Can mixing spaces and tabs cause problems in indentation?
Yes, Python requires consistent indentation. Mixing spaces and tabs can cause errors or unexpected blocks.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the indentation level at step 4?
A1
B2
C0
D3
💡 Hint
Check the 'Indentation Level' column for step 4 in execution_table.
At which step does the code print "Done"?
AStep 5
BStep 4
CStep 2
DStep 6
💡 Hint
Look at the 'Output' column in execution_table to find when "Done" is printed.
If the line print("No") was not indented, what would happen?
AIt would cause a syntax error
BIt would be part of the outer if block
CIt would run regardless of the nested if condition
DIt would be ignored
💡 Hint
Indentation controls block grouping; unindented lines run outside nested blocks.
Concept Snapshot
Python uses indentation (spaces) to group code lines into blocks.
Blocks start when indentation increases and end when it decreases.
All lines in a block must have the same indentation.
Indentation replaces braces used in other languages.
Consistent indentation is required to avoid errors.
Full Transcript
Python groups code lines into blocks using indentation. When Python reads each line, it checks how far it is indented compared to previous lines. If the indentation increases, it starts a new block nested inside the previous one. If it stays the same, the line is part of the current block. If it decreases, Python closes one or more blocks. For example, in the code with if True and nested if False, the print("Hello") line is inside the first if block because it is indented. The print("No") line is inside the nested if block but does not run because the condition is False. The print("Done") line is not indented, so it runs outside all blocks. Mixing spaces and tabs can cause errors, so always use consistent indentation. This way, Python knows which lines belong together and runs the code correctly.

Practice

(1/5)
1. What does indentation in Python indicate?
easy
A. Which lines of code belong together in a block
B. The data type of a variable
C. The speed of code execution
D. The name of a function

Solution

  1. Step 1: Understand Python's use of indentation

    Python uses indentation to group lines of code that belong to the same block, like inside a function or loop.
  2. Step 2: Identify what indentation shows

    Indentation shows which lines are connected logically and executed together.
  3. Final Answer:

    Which lines of code belong together in a block -> Option A
  4. Quick Check:

    Indentation = Code blocks [OK]
Hint: Indentation groups code lines into blocks [OK]
Common Mistakes:
  • Thinking indentation shows variable types
  • Confusing indentation with execution speed
  • Assuming indentation names functions
2. Which of the following code snippets has correct indentation in Python?
easy
A.
def greet():
    print('Hello')
  print('World')
B.
def greet():
print('Hello')
print('World')
C.
def greet():
print('Hello')
    print('World')
D.
def greet():
  print('Hello')
  print('World')

Solution

  1. Step 1: Check indentation inside the function

    All lines inside the function must be indented the same amount to belong to the function block.
  2. Step 2: Identify the snippet with consistent indentation

    def greet():
      print('Hello')
      print('World')
    has both print statements indented equally under the function, which is correct.
  3. Final Answer:

    def greet():\n print('Hello')\n print('World') -> Option D
  4. Quick Check:

    Consistent indentation inside function = Correct [OK]
Hint: Indent all block lines equally under the header [OK]
Common Mistakes:
  • Mixing indentation levels inside a block
  • Not indenting any lines inside a function
  • Indenting only some lines inconsistently
3. What will be the output of this code?
for i in range(2):
    print('Start')
    if i == 0:
        print('First loop')
    print('End')
medium
A. Start\nFirst loop\nEnd\nStart\nEnd
B. Start\nEnd\nStart\nFirst loop\nEnd
C. Start\nFirst loop\nEnd\nStart\nFirst loop\nEnd
D. Start\nEnd\nStart\nEnd

Solution

  1. Step 1: Trace the loop iterations

    The loop runs twice: i=0 and i=1.
  2. Step 2: Check prints for each iteration

    For i=0: prints 'Start', then 'First loop' (because i==0), then 'End'. For i=1: prints 'Start' and 'End' only.
  3. Final Answer:

    Start\nFirst loop\nEnd\nStart\nEnd -> Option A
  4. Quick Check:

    Loop with condition prints extra line only once [OK]
Hint: Follow indentation to see which prints run inside conditions [OK]
Common Mistakes:
  • Ignoring indentation and printing 'First loop' twice
  • Mixing order of printed lines
  • Assuming all prints run every iteration
4. Identify the error in this code:
if True:
print('Yes')
    print('Still Yes')
medium
A. SyntaxError because of missing colon
B. IndentationError due to inconsistent indentation
C. No error, code runs fine
D. NameError due to undefined variable

Solution

  1. Step 1: Check indentation after if statement

    Lines inside the if block must be indented equally.
  2. Step 2: Identify inconsistent indentation

    The first print is not indented, the second print is indented. This causes an IndentationError.
  3. Final Answer:

    IndentationError due to inconsistent indentation -> Option B
  4. Quick Check:

    Inconsistent indentation = IndentationError [OK]
Hint: All lines in a block must have same indentation [OK]
Common Mistakes:
  • Thinking missing colon causes error here
  • Assuming code runs without indentation
  • Confusing IndentationError with NameError
5. You want to write a function that prints numbers 1 to 3, each followed by 'Done' on a new line. Which code correctly uses indentation to achieve this?
def print_numbers():
    for i in range(1, 4):
        print(i)
    print('Done')
hard
A.
def print_numbers():
    for i in range(1, 4):
        print(i)
    print('Done')
B.
def print_numbers():
    for i in range(1, 4):
    print(i)
    print('Done')
C.
def print_numbers():
    for i in range(1, 4):
        print(i)
        print('Done')
D.
def print_numbers():
for i in range(1, 4):
    print(i)
    print('Done')

Solution

  1. Step 1: Understand desired output

    Each number 1 to 3 should print, then 'Done' on a new line after each number.
  2. Step 2: Check indentation for print statements

    To print 'Done' after each number, both print(i) and print('Done') must be inside the for loop, indented equally.
  3. Step 3: Identify correct option

    def print_numbers():
        for i in range(1, 4):
            print(i)
            print('Done')
    has both prints indented inside the loop, so 'Done' prints after each number.
  4. Final Answer:

    def print_numbers():\n for i in range(1, 4):\n print(i)\n print('Done') -> Option C
  5. Quick Check:

    Same indentation inside loop = prints per iteration [OK]
Hint: Indent all loop actions equally to repeat each time [OK]
Common Mistakes:
  • Indenting 'Done' outside loop causing single print
  • Not indenting loop body at all
  • Mixing indentation levels inside loop