Home βΊ Problems βΊ Tuple unpacking
Tuple unpacking
π§ Predict the output Topic: tuples Difficulty: easy Free
What this problem practises
Tuples are immutable containers that may themselves hold mutable objects, and it is the comma β not the parentheses β that builds one. Any unpacking where the counts disagree raises ValueError.
This is an output-prediction problem: read the snippet carefully and write down exactly what it prints before anything runs. These questions are interview staples because they test whether you know the language rules, or merely recognise their syntax.
Difficulty: easy β the fix or the trick is normally a single line, and a careful read should be enough.
The challenge
What will this program print? Type the exact output (both lines).
The code runs in PyDebugβs in-browser compiler. Open the problem, run the snippet, watch the exact error or output, and keep iterating until it is right. Signed-in solves count toward XP and your daily streak.
The snippet
The interactive editor pre-fills exactly this code β read it, then submit your prediction:
t = (3, 14, 25)
x, y, z = t
print(x + z)
print(t[1])Understand the rule
Tuple unpacking assigns elements of any right-hand sequence positionally to multiple target variables on the left (`a, b = coords` or `a, b = b, a`). Crucially, Python evaluates the ENTIRE right-hand side tuple in memory before rebinding a single target variable on the left.
How to trace it
- Evaluate the complete right-hand expression first and pack its values into a temporary tuple.
- Verify the number of target variables on the left matches the sequence length (unless a starred target `*rest` captures extras).
- Assign element `0` to the first target, element `1` to the second target, and so on from left to right.
- Print the requested variables using their freshly bound values.
Common wrong fixes
- Tracing `a, b = b, a + b` sequentially (`a = b` first, then computing `a + b` with the new `a`) instead of evaluating `(b, a + b)` using the old `a` first!
- Missing a starred target like `first, *mid, last = nums`, where `mid` is always a `list` (even when empty `[]`) even though `nums` was a tuple.
- Forgetting that `x = 1, 2` without parentheses still packs a tuple `(1, 2)` because the comma creates the tuple.
Rule to remember
Freeze and evaluate the entire right-hand side tuple first, then bind left-hand targets simultaneously.
More tuples problems
Keep going
- Output-prediction strategies β how to predict tricky snippets without running them.
- Browse every tuples problem in this topic.
- Common Python errors and what they actually mean, plus the Python glossary for any term used on this page.