Patronen printen – voorspel de uitvoer (OPLOSSINGEN)¶
Informatica-wetenschappen · I. De Schrijver - gemaakt met behulp van AI Claude
Opdracht: voorspel bij elke oefening de uitvoer zonder de code uit te voeren, net zoals op de toets. Noteer je antwoord in het vak Jouw voorspelling (dubbelklik om te typen) of op papier. Pas daarna voer je de codecel uit (Shift + Enter) om te controleren.
De oefeningen worden steeds moeilijker: van ⭐ tot ⭐⭐⭐⭐⭐, met op het einde een paar bonusoefeningen.
Spiekbriefje
| code | betekenis |
|---|---|
range(1, 6) |
1, 2, 3, 4, 5 (de 6 doet niet mee) |
range(3) |
0, 1, 2 (start bij 0!) |
range(1, 8, 2) |
1, 3, 5, 7 (stappen van 2) |
range(5, 0, -1) |
5, 4, 3, 2, 1 |
"ab" * 3 |
ababab |
print(x, end="") |
print x en blijf op dezelfde lijn |
print() |
ga naar een nieuwe lijn |
i % 2 |
rest bij deling door 2: 0 (even) of 1 (oneven) |
j % 3 |
rest bij deling door 3: 0, 1 of 2 |
💡 Tip: maak bij een lus in een lus een tabelletje met de waarden van i en j. Noteer een spatie op papier als ·, dan vergeet je ze niet.
De patronen zijn gebaseerd op de "number pattern programs" van codeforwin.org (daar in C), herschreven in Python.
📘 Uitgebreide verklaringen: per niveau wordt één oefening volledig uitgewerkt, met tabellen van de waarden van de variabelen: oefening 5, 9, 15, 20, 26, 29.
Oefening 1 ⭐¶
Wat is de uitvoer?
for i in range(3):
print("1" * 6)
111111 111111 111111
Oplossing:
111111
111111
111111
Uitleg: range(3) geeft 0, 1, 2: de lus loopt dus 3 keer. Elke keer wordt "1" * 6 = 111111 geprint.
Oefening 2 ⭐¶
Wat is de uitvoer?
for i in range(2, 6):
print(str(i) * 4)
2222 3333 4444 5555
Oplossing:
2222
3333
4444
5555
Uitleg: range(2, 6) geeft 2, 3, 4, 5 (4 rijen). str(i) maakt van het getal een tekst; * 4 herhaalt die 4 keer.
Oefening 3 ⭐¶
Wat is de uitvoer?
for i in range(1, 7):
print(str(i) * i)
1 22 333 4444 55555 666666
Oplossing:
1
22
333
4444
55555
666666
Uitleg: Het cijfer i wordt i keer herhaald: 1 keer "1", 2 keer "2", … tot 6 keer "6".
Oefening 4 ⭐¶
Wat is de uitvoer?
for i in range(4, 0, -1):
print(str(i) * i)
4444 333 22 1
Oplossing:
4444
333
22
1
Uitleg: range(4, 0, -1) telt af: 4, 3, 2, 1 (de 0 doet niet mee).
Oefening 5 ⭐ 📘 uitgebreide verklaring¶
Wat is de uitvoer?
n = 7
for i in range(1, n + 1, 2):
print(str(i) * (n - i + 1))
1111111 33333 555 7
Oplossing:
1111111
33333
555
7
Uitleg: range(1, 8, 2) geeft 1, 3, 5, 7. Het aantal keer is n - i + 1 = 7, 5, 3, 1.
📘 Uitgebreide verklaring¶
Stap 1 – welke waarden krijgt i?
n = 7, dus range(1, n + 1, 2) = range(1, 8, 2). We starten bij 1 en tellen telkens 2 bij, zolang we onder 8 blijven: i = 1, 3, 5, 7. De lus loopt dus 4 keer → 4 rijen.
Stap 2 – wat wordt er per rij geprint?
Het cijfer i, herhaald n - i + 1 keer:
| i | n - i + 1 | berekening | geprinte rij |
|---|---|---|---|
| 1 | 7 | "1" * 7 |
1111111 |
| 3 | 5 | "3" * 5 |
33333 |
| 5 | 3 | "5" * 3 |
555 |
| 7 | 1 | "7" * 1 |
7 |
Valkuil: wie range(1, 8, 2) leest als 1 t.e.m. 8, of de stap 2 vergeet, schrijft 7 rijen.
Controleer zelf met een extra print in de lus:
n = 7
for i in range(1, n + 1, 2):
print("i =", i, " aantal =", n - i + 1, " →", str(i) * (n - i + 1))
i = 1 aantal = 7 → 1111111 i = 3 aantal = 5 → 33333 i = 5 aantal = 3 → 555 i = 7 aantal = 1 → 7
Niveau 2 – een lus in een lus¶
Een binnenste lus met print(..., end="") en daarna een lege print() voor een nieuwe lijn.
Oefening 6 ⭐⭐¶
Wat is de uitvoer?
for i in range(3):
for j in range(1, 8):
print(j, end="")
print()
1234567 1234567 1234567
Oplossing:
1234567
1234567
1234567
Uitleg: De binnenste lus print 1 t.e.m. 7 zonder nieuwe lijn (end=""). De lege print() zorgt daarna voor een nieuwe lijn. Dat gebeurt 3 keer.
Oefening 7 ⭐⭐¶
Wat is de uitvoer?
for i in range(1, 7):
for j in range(1, i + 1):
print(j, end="")
print()
1 12 123 1234 12345 123456
Oplossing:
1
12
123
1234
12345
123456
Uitleg: De binnenste lus loopt van 1 tot en met i. Rij 1: 1, rij 2: 12, … rij 6: 123456.
Oefening 8 ⭐⭐¶
Wat is de uitvoer?
for i in range(4, 0, -1):
for j in range(1, i + 1):
print(j, end="")
print()
1234 123 12 1
Oplossing:
1234
123
12
1
Uitleg: Zelfde binnenste lus als de vorige oefening, maar i telt nu af van 4 naar 1.
Oefening 9 ⭐⭐ 📘 uitgebreide verklaring¶
Wat is de uitvoer?
for i in range(2, 7):
for j in range(i, 0, -1):
print(j, end="")
print()
21 321 4321 54321 654321
Oplossing:
21
321
4321
54321
654321
Uitleg: i loopt van 2 t.e.m. 6; de binnenste lus telt áf van i tot en met 1. De eerste rij is dus 21, niet 1!
📘 Uitgebreide verklaring¶
Stap 1 – de buitenste lus: range(2, 7) geeft i = 2, 3, 4, 5, 6 → 5 rijen. Let op: i begint bij 2, niet bij 1!
Stap 2 – de binnenste lus: range(i, 0, -1) telt af van i tot (niet t.e.m.) 0, dus tot en met 1. Elk getal j wordt geprint met end="": alles blijft op dezelfde lijn. De lege print() na de binnenste lus zorgt voor de nieuwe lijn.
| i | binnenste lus | waarden van j | geprinte rij |
|---|---|---|---|
| 2 | range(2, 0, -1) |
2, 1 | 21 |
| 3 | range(3, 0, -1) |
3, 2, 1 | 321 |
| 4 | range(4, 0, -1) |
4, 3, 2, 1 | 4321 |
| 5 | range(5, 0, -1) |
5, 4, 3, 2, 1 | 54321 |
| 6 | range(6, 0, -1) |
6, 5, 4, 3, 2, 1 | 654321 |
Valkuil: de eerste rij is 21. Er komt dus géén rij met enkel 1.
Controleer zelf: deze versie toont ook de waarde van i vóór elke rij.
for i in range(2, 7):
print("i =", i, ":", end=" ")
for j in range(i, 0, -1):
print(j, end="")
print()
i = 2 : 21 i = 3 : 321 i = 4 : 4321 i = 5 : 54321 i = 6 : 654321
Oefening 10 ⭐⭐¶
Wat is de uitvoer?
for i in range(6):
for j in range(4):
print(i % 2, end="")
print()
0000 1111 0000 1111 0000 1111
Oplossing:
0000
1111
0000
1111
0000
1111
Uitleg: In een rij is i steeds hetzelfde. i begint bij 0, dus de eerste rij is 0000; daarna wisselt het: 1, 0, 1, …
Oefening 11 ⭐⭐¶
Wat is de uitvoer?
for i in range(3):
for j in range(9):
print(j % 3, end="")
print()
012012012 012012012 012012012
Oplossing:
012012012
012012012
012012012
Uitleg: Nu hangt het af van j (de kolom): j = 0, 1, 2, 3, 4, … geeft rest 0, 1, 2, 0, 1, … Elke rij is dus 012012012.
Niveau 3 – rekenen met i en j¶
Wat er geprint wordt, hangt af van het rijnummer i én het kolomnummer j.
Oefening 12 ⭐⭐⭐¶
Wat is de uitvoer?
for i in range(1, 5):
for j in range(1, 7):
print(i + j - 1, end="")
print()
123456 234567 345678 456789
Oplossing:
123456
234567
345678
456789
Uitleg: 4 rijen van 6 getallen. Rij i start bij i + 1 - 1 = i; binnen een rij stijgt het getal telkens met 1.
Oefening 13 ⭐⭐⭐¶
Wat is de uitvoer?
for i in range(1, 5):
for j in range(i, 2 * i):
print(j, end="")
print()
1 23 345 4567
Oplossing:
1
23
345
4567
Uitleg: Rij i loopt van i tot (niet t.e.m.!) 2 · i. Rij 4: range(4, 8) → 4 5 6 7.
Oefening 14 ⭐⭐⭐¶
Wat is de uitvoer?
n = 6
for i in range(1, n + 1):
for j in range(n - i + 1, n + 1):
print(j, end="")
print()
6 56 456 3456 23456 123456
Oplossing:
6
56
456
3456
23456
123456
Uitleg: Het startgetal is n - i + 1: 6, 5, 4, 3, 2, 1. Elke rij eindigt bij 6.
Oefening 15 ⭐⭐⭐ 📘 uitgebreide verklaring¶
Wat is de uitvoer?
for i in range(1, 4):
for j in range(2 * i - 1, 8, 2):
print(j, end="")
print()
1357 357 57
Oplossing:
1357
357
57
Uitleg: Startwaarden 1, 3, 5 en stapgrootte 2. Het getal 8 zelf doet niet mee, dus de laatste waarde is 7.
📘 Uitgebreide verklaring¶
Stap 1 – de buitenste lus: range(1, 4) → i = 1, 2, 3 → 3 rijen.
Stap 2 – de binnenste lus: de startwaarde hangt af van i: 2 * i - 1. De stop is altijd 8 (doet niet mee) en de stap is 2.
| i | start = 2·i - 1 | binnenste lus | waarden van j | geprinte rij |
|---|---|---|---|---|
| 1 | 2 · 1 - 1 = 1 | range(1, 8, 2) |
1, 3, 5, 7 | 1357 |
| 2 | 2 · 2 - 1 = 3 | range(3, 8, 2) |
3, 5, 7 | 357 |
| 3 | 2 · 3 - 1 = 5 | range(5, 8, 2) |
5, 7 | 57 |
Merk op: omdat we in stappen van 2 tellen vanaf een oneven getal, krijgen we enkel oneven getallen. Elke rij begint 2 hoger en is dus 1 getal korter.
Controleer zelf:
for i in range(1, 4):
print("i =", i, " j-waarden:", list(range(2 * i - 1, 8, 2)))
i = 1 j-waarden: [1, 3, 5, 7] i = 2 j-waarden: [3, 5, 7] i = 3 j-waarden: [5, 7]
Oefening 16 ⭐⭐⭐¶
Wat is de uitvoer?
for i in range(1, 8):
for j in range(1, i + 1):
print(j % 2, end="")
print()
1 10 101 1010 10101 101010 1010101
Oplossing:
1
10
101
1010
10101
101010
1010101
Uitleg: j % 2 wisselt 1, 0, 1, 0, … Rij i krijgt de eerste i tekens daarvan (7 rijen).
Oefening 17 ⭐⭐⭐¶
Wat is de uitvoer?
for i in range(4):
for j in range(7):
print((i + j + 1) % 2, end="")
print()
1010101 0101010 1010101 0101010
Oplossing:
1010101
0101010
1010101
0101010
Uitleg: Als i + j even is, is (i + j + 1) oneven en is de rest 1. Linksboven is i + j = 0 (even), dus daar staat een 1. Zo ontstaat een dambord van 4 bij 7.
Oefening 18 ⭐⭐⭐⭐¶
Wat is de uitvoer?
rijen = 4
kolommen = 7
for i in range(1, rijen + 1):
for j in range(1, kolommen + 1):
if i == 1 or i == rijen or j == 1 or j == kolommen:
print(1, end="")
else:
print(0, end="")
print()
1111111 1000001 1000001 1111111
Oplossing:
1111111
1000001
1000001
1111111
Uitleg: Een 1 staat enkel op de rand: de eerste of laatste rij (i) of de eerste of laatste kolom (j). Let op: 4 rijen maar 7 kolommen.
Oefening 19 ⭐⭐⭐⭐¶
Wat is de uitvoer?
for i in range(1, 4):
for j in range(1, 6):
if i == 2 and j == 3:
print(0, end="")
else:
print(1, end="")
print()
11111 11011 11111
Oplossing:
11111
11011
11111
Uitleg: Enkel op rij 2, kolom 3 (het midden van 3 × 5) komt een 0, want daar zijn beide voorwaarden waar.
Oefening 20 ⭐⭐⭐⭐ 📘 uitgebreide verklaring¶
Wat is de uitvoer?
n = 7
for i in range(1, n + 1):
for j in range(1, n + 1):
if i == j or i + j == n + 1:
print(1, end="")
else:
print(0, end="")
print()
1000001 0100010 0010100 0001000 0010100 0100010 1000001
Oplossing:
1000001
0100010
0010100
0001000
0010100
0100010
1000001
Uitleg: i == j is de diagonaal van linksboven naar rechtsonder. i + j == 8 is de andere diagonaal. Samen vormen ze een X; in rij 4 kruisen ze.
📘 Uitgebreide verklaring¶
n = 7: zowel i als j lopen van 1 t.e.m. 7 → een vierkant van 7 × 7.
Op elke positie (i, j) beslist de if: een 1 als i == j of i + j == 8, anders een 0.
Stap 1 – welke posities voldoen? Per rij zijn er hoogstens twee kolommen met een 1:
| i | i == j → | i + j == 8 → | geprinte rij |
|---|---|---|---|
| 1 | j = 1 | j = 8 - 1 = 7 | 1000001 |
| 2 | j = 2 | j = 8 - 2 = 6 | 0100010 |
| 3 | j = 3 | j = 8 - 3 = 5 | 0010100 |
| 4 | j = 4 | j = 8 - 4 = 4 | 0001000 |
| 5 | j = 5 | j = 8 - 5 = 3 | 0010100 |
| 6 | j = 6 | j = 8 - 6 = 2 | 0100010 |
| 7 | j = 7 | j = 8 - 7 = 1 | 1000001 |
Stap 2 – het midden: in rij 4 vallen beide voorwaarden op dezelfde kolom (j = 4). Daar staat dus maar één 1. Dat is het kruispunt van de X.
Stap 3 – rooster: 🟦 = hier geldt i == j, 🟧 = hier geldt i + j == 8. Overal waar een kleur staat, komt een 1; bij · een 0.
| i \ j | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 1 | 🟦 | · | · | · | · | · | 🟧 |
| 2 | · | 🟦 | · | · | · | 🟧 | · |
| 3 | · | · | 🟦 | · | 🟧 | · | · |
| 4 | · | · | · | 🟦🟧 | · | · | · |
| 5 | · | · | 🟧 | · | 🟦 | · | · |
| 6 | · | 🟧 | · | · | · | 🟦 | · |
| 7 | 🟧 | · | · | · | · | · | 🟦 |
Controleer zelf: print per rij de kolommen waar een 1 komt.
n = 7
for i in range(1, n + 1):
kolommen = []
for j in range(1, n + 1):
if i == j or i + j == n + 1:
kolommen.append(j)
print("rij", i, "→ 1 in kolom(men)", kolommen)
rij 1 → 1 in kolom(men) [1, 7] rij 2 → 1 in kolom(men) [2, 6] rij 3 → 1 in kolom(men) [3, 5] rij 4 → 1 in kolom(men) [4] rij 5 → 1 in kolom(men) [3, 5] rij 6 → 1 in kolom(men) [2, 6] rij 7 → 1 in kolom(men) [1, 7]
Oefening 21 ⭐⭐⭐⭐¶
Wat is de uitvoer?
for i in range(1, 4):
for j in range(1, 7):
if i + j - 1 <= 4:
print(i + j - 1, end="")
else:
print(4, end="")
print()
123444 234444 344444
Oplossing:
123444
234444
344444
Uitleg: Zoals bij oefening 12, maar zodra het getal groter dan 4 zou worden, wordt het 4.
Oefening 22 ⭐⭐⭐⭐¶
Wat is de uitvoer?
n = 4
for i in range(1, n + 1):
for j in range(1, n + 1):
if j < i:
print(n + 1 - j, end="")
else:
print(n + 1 - i, end="")
print()
4444 4333 4322 4321
Oplossing:
4444
4333
4322
4321
Uitleg: Links van de diagonaal (j < i) hangt het getal af van de kolom j: 4, 3, 2, …; op en rechts van de diagonaal van de rij i.
Niveau 5 – spaties, piramides en tellers¶
Let op de spaties vooraan en op variabelen die blijven doortellen.
Oefening 23 ⭐⭐⭐⭐⭐¶
Wat is de uitvoer?
n = 4
getal = 2
for i in range(1, n + 1):
for j in range(i):
print(getal, end=" ")
getal += 2
print()
2 4 6 8 10 12 14 16 18 20
Oplossing:
2·
4·6·
8·10·12·
14·16·18·20·
(spaties weergegeven als ·)
Uitleg: getal wordt nooit teruggezet: het telt per 2 door over de rijen heen (2 | 4 6 | 8 10 12 | 14 16 18 20). Let op: end=" " zet telkens een spatie ná elk getal.
Oefening 24 ⭐⭐⭐⭐⭐¶
Wat is de uitvoer?
n = 5
for i in range(1, n + 1):
for j in range(1, i + 1):
print(j, end="")
print()
for i in range(n - 1, 0, -1):
for j in range(1, i + 1):
print(j, end="")
print()
1 12 123 1234 12345 1234 123 12 1
Oplossing:
1
12
123
1234
12345
1234
123
12
1
Uitleg: Twee lussen na elkaar: de eerste bouwt op tot 12345 (5 rijen), de tweede bouwt af vanaf 1234 (4 rijen). Samen 9 rijen.
Oefening 25 ⭐⭐⭐⭐⭐¶
Wat is de uitvoer?
n = 3
for i in range(1, 7):
for j in range(1, n + 1):
if i % 2 == 1:
print(j, end="")
else:
print(n + 1 - j, end="")
print()
123 321 123 321 123 321
Oplossing:
123
321
123
321
123
321
Uitleg: 6 rijen van 3 cijfers. Oneven rijen tellen op (123), even rijen tellen af (321): een zigzag.
Oefening 26 ⭐⭐⭐⭐⭐ 📘 uitgebreide verklaring¶
Wat is de uitvoer?
n = 4
for i in range(1, n + 1):
print(" " * (n - i), end="")
for j in range(1, 2 * i):
print(j, end="")
print()
1 123 12345 1234567
Oplossing:
···1
··123
·12345
1234567
(spaties weergegeven als ·)
Uitleg: Eerst n - i spaties (3, 2, 1, 0), daarna de getallen 1 t.e.m. 2 · i - 1. Zo ontstaat een piramide. Tip: noteer de spaties als · op papier.
📘 Uitgebreide verklaring¶
Elke rij bestaat uit twee delen: eerst spaties, dan getallen.
print(" " * (n - i), end="")print n - i spaties en blijft op dezelfde lijn.- De binnenste lus print de getallen 1 t.e.m. 2 · i - 1 (
range(1, 2 * i): 2 · i doet niet mee). print()gaat naar een nieuwe lijn.
| i | spaties n - i | spaties | getallen | waarden van j | volledige rij |
|---|---|---|---|---|---|
| 1 | 4 - 1 = 3 | ··· |
range(1, 2) |
1 | ···1 |
| 2 | 4 - 2 = 2 | ·· |
range(1, 4) |
1, 2, 3 | ··123 |
| 3 | 4 - 3 = 1 | · |
range(1, 6) |
1, 2, 3, 4, 5 | ·12345 |
| 4 | 4 - 4 = 0 | (geen) | range(1, 8) |
1, 2, 3, 4, 5, 6, 7 | 1234567 |
Waarom een piramide? Per rij komt er 1 spatie minder en 2 getallen meer. Het eerste getal schuift dus telkens 1 plaats naar links, het laatste 1 plaats naar rechts.
Valkuil: de spaties vooraan vergeten. Noteer ze op papier als ·.
Controleer zelf: in deze versie worden de spaties als · geprint.
n = 4
for i in range(1, n + 1):
print("·" * (n - i), end="")
for j in range(1, 2 * i):
print(j, end="")
print()
···1 ··123 ·12345 1234567
Oefening 27 ⭐⭐⭐⭐⭐¶
Wat is de uitvoer?
n = 6
for i in range(1, n + 1):
print(" " * (n - i), end="")
for j in range(1, i + 1):
print(j, end="")
for j in range(i - 1, 0, -1):
print(j, end="")
print()
1
121
12321
1234321
123454321
12345654321
Oplossing:
·····1
····121
···12321
··1234321
·123454321
12345654321
(spaties weergegeven als ·)
Uitleg: Per rij: eerst spaties, dan optellen van 1 tot i, daarna aftellen van i - 1 tot 1. Rij 3: ···12321.
Oefening 28 🧠¶
Wat is de uitvoer?
n = 6
for i in range(1, n + 1):
for j in range(1, n + 1):
if j < i:
print(i - j + 1, end="")
else:
print(j - i + 1, end="")
print()
123456 212345 321234 432123 543212 654321
Oplossing:
123456
212345
321234
432123
543212
654321
Uitleg: Het getal is de afstand tot de diagonaal + 1. Op de diagonaal staat telkens 1; hoe verder ervan, hoe groter.
Oefening 29 🧠 📘 uitgebreide verklaring¶
Wat is de uitvoer?
getal = 1
lengte = 1
for rij in range(5):
for k in range(lengte):
print(getal, end="")
getal += 1
if getal == 10:
getal = 1
print()
lengte = lengte * 2
1 23 4567 89123456 7891234567891234
Oplossing:
1
23
4567
89123456
7891234567891234
Uitleg: De lengte van de rij verdubbelt (1, 2, 4, 8, 16). Het getal telt door, maar springt na 9 terug naar 1.
📘 Uitgebreide verklaring¶
Drie variabelen veranderen: rij (de buitenste lus), lengte (hoeveel cijfers in deze rij) en getal (het volgende cijfer).
lengtestart bij 1 en wordt na elke rij verdubbeld: 1, 2, 4, 8, 16.getalwordt nooit teruggezet bij een nieuwe rij. Het telt gewoon verder.- Wordt
getal10, dan springt het terug naar 1. Zo blijft elk getal één cijfer.
| rij | lengte | getal bij start | geprinte rij | getal na de rij | nieuwe lengte |
|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 |
2 | 2 |
| 1 | 2 | 2 | 23 |
4 | 4 |
| 2 | 4 | 4 | 4567 |
8 | 8 |
| 3 | 8 | 8 | 89123456 |
7 | 16 |
| 4 | 16 | 7 | 7891234567891234 |
5 | 32 |
Detail rij 3 (lengte 8): het getal start bij 8 → 8, 9, dan wordt getal 10 → terug naar 1 → 1, 2, 3, 4, 5, 6. Samen 8 cijfers: 89123456.
Detail rij 4 (lengte 16): 7, 8, 9, 1, 2, …, 9, 1, 2, 3, 4 → 7891234567891234.
Controleer zelf: print na elke rij de waarden van de variabelen.
getal = 1
lengte = 1
for rij in range(5):
for k in range(lengte):
print(getal, end="")
getal += 1
if getal == 10:
getal = 1
print(" ← rij", rij, "| lengte", lengte, "| getal nu", getal)
lengte = lengte * 2
1 ← rij 0 | lengte 1 | getal nu 2 23 ← rij 1 | lengte 2 | getal nu 4 4567 ← rij 2 | lengte 4 | getal nu 8 89123456 ← rij 3 | lengte 8 | getal nu 7 7891234567891234 ← rij 4 | lengte 16 | getal nu 5
Oefening 30 🧠¶
Wat is de uitvoer?
n = 4
for i in range(1, n + 1):
print(" " * (n - i), end="")
for j in range(1, i + 1):
print(j, end="")
for j in range(i - 1, 0, -1):
print(j, end="")
print()
for i in range(n - 1, 0, -1):
print(" " * (n - i), end="")
for j in range(1, i + 1):
print(j, end="")
for j in range(i - 1, 0, -1):
print(j, end="")
print()
1 121 12321 1234321 12321 121 1
Oplossing:
···1
··121
·12321
1234321
·12321
··121
···1
(spaties weergegeven als ·)
Uitleg: Een ruit: de bovenste helft is de piramide van oefening 27 (nu met n = 4), de onderste helft dezelfde piramide omgekeerd (3 rijen).