The answer is D. The program prints:
1 2 3 4 Zap 6 7 8 9 Zap
This answer was checked by running the program for real.
Why?
Every number that divides exactly by 5 (remainder 0) is replaced by ‘Zap’. All the others are printed as they are.
Trace table
A trace table follows the program step by step. Here’s this one:
| number | number % 5 | printed |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 0 | Zap |
| 6 | 1 | 6 |
| 7 | 2 | 7 |
| 8 | 3 | 8 |
| 9 | 4 | 9 |
| 10 | 0 | Zap |
The code again
for number in range(1, 11):
if number % 5 == 0:
print("Zap")
else:
print(number)
Try it: change one number in the program and predict the new output before you run it.