Python Nested for–for MCQs (25)
Covers iteration order, triangular loops, break/continue (inner vs outer), enumerate, zip, 2-level comprehensions, and common pitfalls. Answers at the end
1) Output?
for i in range(2):
for j in range(3):
print(f"{i}{j}", end=" ")
A. 00 01 02 10 11 12
B. 00 10 01 11 02 12
C. 00 01 10 11 02 12
D. (no output)
2) Sum produced?
total = 0
for i in range(3):
for j in range(2):
total += i * j
print(total)
A. 2
B. 3
C. 4
D. 6
3) Break in inner loop.
for i in range(3):
for j in range(3):
if j == 1:
break
print(f"{i}{j}", end=" ")
A. 00 01 10 11 20 21
B. 00 10 20
C. 01 11 21
D. (no output)
4) Continue on outer selection.
for i in range(4):
if i % 2 == 1:
continue
for j in range(2):
print(f"{i}{j}", end=" ")
A. 00 01 10 11 20 21 30 31
B. 00 01 20 21
C. 10 11 30 31
D. (no output)
5) for–else with inner break (outer not broken).
hit = False
for i in range(2):
for j in range(2):
if i == j == 1:
hit = True
break
else:
print("A")
if hit:
print("B")
A. A then B (on two lines)
B. only A
C. only B
D. nothing
6) Triangular loop count?
cnt = 0
for i in range(4): # 0..3
for j in range(i): # 0..i-1
cnt += 1
print(cnt)
A. 3
B. 4
C. 6
D. 8
7) Nested enumerate.
pairs = []
for i, ch in enumerate("ab"):
for j, d in enumerate("XY"):
if i == j:
pairs.append(ch + d)
print(pairs)
A. [‘aX’, ‘bY’]
B. [‘aY’, ‘bX’]
C. [‘aX’, ‘aY’, ‘bX’, ‘bY’]
D. []
8) Double list comprehension.
out = [i*j for i in range(3) for j in range(2)]
print(out)
A. [0, 1, 0, 2, 0, 3]
B. [0, 0, 0, 1, 2, 3]
C. [0, 0, 0, 1, 2, 2]
D. [0, 0, 0, 1, 2, 3] (order varies)
9) Filtering inside 2-level comp.
out = [(i,j) for i in range(3) for j in range(3) if i < j]
print(len(out))
A. 3
B. 6
C. 9
D. 0
10) Inner break vs outer else.
for i in range(2):
for j in range(2):
if j == 0: break
else:
print("OK")
A. Prints OK
B. Prints nothing
C. Error
D. Prints OK twice
11) Product (cartesian) size.
a, b = [1,2,3], ['x','y']
cnt = 0
for _ in a:
for __ in b:
cnt += 1
print(cnt)
A. 2
B. 3
C. 5
D. 6
12) Nested with zip.
res = []
for i, j in zip(range(3), range(1, 4)):
for k in range(i):
res.append(j)
print(sum(res))
A. 0
B. 4
C. 5
D. 6
13) Nested dict build.
d = {}
for i in range(2):
for j in range(2):
d[(i,j)] = i + j
print(d[(1,1)])
A. 0
B. 1
C. 2
D. KeyError
14) Skip inner when outer odd.
out = []
for i in range(4):
for j in range(2):
if i % 2:
break
out.append((i, j))
print(len(out))
A. 8
B. 4
C. 2
D. 6
15) Order in 2-level comp.
pairs = [f"{i}{j}" for i in range(2) for j in range(2)]
print(pairs)
A. [’00’,’01’,’10’,’11’]
B. [’00’,’10’,’01’,’11’]
C. [’00’,’11’,’01’,’10’]
D. []
16) Inner continue count.
cnt = 0
for i in range(3):
for j in range(3):
if j % 2 == 0:
continue
cnt += 1
print(cnt)
A. 3
B. 4
C. 6
D. 9
17) Multiplication table slice.
res = []
for i in range(1,4):
for j in range(1,4):
if i == j:
res.append(i*j)
print(sum(res))
A. 6
B. 14
C. 30
D. 1
18) Flatten matrix.
m = [[1,2],[3,4],[5]]
flat = []
for row in m:
for x in row:
flat.append(x)
print(flat[-1])
A. 4
B. 5
C. [5]
D. IndexError
19) Unique pairs (i<j).
pairs = set()
for i in range(3):
for j in range(3):
if i < j: pairs.add((i,j))
print(len(pairs))
A. 3
B. 6
C. 9
D. 0
20) Nested over string & range.
count = 0
for i in "ab":
for j in range(3):
if i == "a" and j == 1:
count += 2
else:
count += 1
print(count)
A. 5
B. 6
C. 7
D. 8
21) Early outer break via flag.
stop = False
for i in range(3):
for j in range(3):
if i*j == 2:
stop = True
break
if stop:
break
print(i, j)
A. 2 1
B. 1 2
C. 2 2
D. 1 1
22) Double set-comprehension size.
s = {i+j for i in range(3) for j in range(3)}
print(len(s))
A. 5
B. 6
C. 7
D. 9
23) Nested over dict items.
d = {"x": [1,2], "y": [3]}
s = 0
for k, vs in d.items():
for v in vs:
s += v
print(s)
A. 3
B. 6
C. 7
D. 1
24) Two-level comp with condition.
out = [i-j for i in range(3) for j in range(3) if (i+j) % 2 == 0]
print(sum(out))
A. 0
B. 1
C. -1
D. 3
25) Nested range bounds.
c = 0
for i in range(1, 4): # 1..3
for j in range(i, 4): # i..3
c += 1
print(c)
A. 3
B. 4
C. 6
D. 7
Answer Key
1) A
2) B
3) B
4) B
5) A
6) C
7) A
8) B
9) A
10) B
11) D
12) B
13) C
14) B
15) A
16) B
17) A
18) B
19) A
20) C
21) B
22) A
23) B
24) A
25) C