Home βΊ Problems βΊ Character triangle pattern ('@')
Character triangle pattern ('@')
π§ Predict the output Topic: loops Difficulty: easy Free
What this problem practises
Loops are where off-by-one bugs live. range() excludes its stop value, the loop variable keeps its last value even after the loop ends, and break versus continue changes the flow in ways that are easy to misread when you skim.
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 (all 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:
for i in range(1, 6):
print('@' * i)Understand the rule
Star and character pattern loops appear in almost every introductory Python lab and placement round. Because Python supports sequence repetition (`'*' * i`), a single `for` loop over `range(1, n + 1)` prints an entire right-angled triangle without needing an inner loop.
How to trace it
- Check both bounds of `range(start, stop)` first β `start` is inclusive while `stop` is strictly excluded.
- On each iteration, Python evaluates the string multiplication expression `'*' * i`, producing a string of length `i`.
- `print()` writes that repeated character row followed by a newline (`end='\n'` by default).
- Count the exact number of iterations and the first and final values of `i` so an off-by-one stop bound never trips your prediction.
Common wrong fixes
- Including the upper bound of `range(1, n)` and predicting `n` rows when Python stops at `n - 1`.
- Forgetting that `'*' * 0` produces an empty string `''`, which still prints a blank line if the loop starts at `0`.
- Adding extra spaces between stars when `'*' * i` concatenates characters directly with no separator.
Rule to remember
Always write down the exact sequence produced by `range(...)` first; each value of `i` directly sets the character count on that line.
More loops problems
Keep going
- Output-prediction strategies β how to predict tricky snippets without running them.
- Browse every loops problem in this topic.
- Common Python errors and what they actually mean, plus the Python glossary for any term used on this page.