Oefeningen - pittig¶
Extra oefeningen voor wie het al goed kent: meer f-strings, lastige indexen en valkuilen in keuze- en herhalingsstructuren.
Bij de meeste oefeningen voorspel je de uitvoer vóór je de cel uitvoert. Schrijf je voorspelling op, voer daarna de cel uit en vergelijk.
- Staat er dat de gebruiker iets typt? Typ dan precies dat wanneer de cel om invoer vraagt.
- Soms geeft de code een foutmelding: schrijf dan gewoon "fout" (welk soort fout hoef je niet te vermelden). Let op: soms verschijnt er eerst nog uitvoer vóór de fout!
- Bij Zoek de fout! staat er precies één fout in de code. Verbeter ze zodat de gewenste uitvoer verschijnt. Soms is er geen foutmelding, maar is de uitvoer gewoon verkeerd.
- Let bij f-strings goed op spaties, haakjes en leestekens.
- De cellen moeten elk apart een correcte uitvoer geven, zonder dat de voorgaande cellen reeds uitgevoerd werden.
Deel 1: Datatypes¶
Oefening 1¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
a = 9
b = 4
print(type(a // b), type(a / b), type(a % b))
print(a // b, a / b, a % b)
<class 'int'> <class 'float'> <class 'int'> 2 2.25 1
Oefening 2¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
x = "7"
y = 2
print(x * y)
print(int(x) ** y)
print(f"{y}{x}{y}")
77 49 272
Oefening 3¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
print(int(float("12.7")) + int("003"))
15
Oefening 4¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
print(float("2.5") * int("2.0"))
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[5], line 1 ----> 1 print(float("2.5") * int("2.0")) ValueError: invalid literal for int() with base 10: '2.0'
Oefening 5¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
print(f"{7 / 2}{7 // 2}{7 % 2}")
3.531
Oefening 6¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
a = True
b = 3
print(a * b, a + b == 4, str(a) + str(b))
3 True True3
Oefening 7¶
Voorspel de uitvoer. Verwacht je een foutmelding? Geef dan aan waar de fout zit en waarom.
De gebruiker typt achtereenvolgens: Noor, dan 15.2.
naam = input("Naam? ")
leeftijd = int(float(input("Leeftijd? ")))
print(f"Over 4 jaar is {naam.upper()} {leeftijd + 4}.")
print(f"{naam[-1] * leeftijd // 7}")
Naam? Lotte Leeftijd? 16 Over 4 jaar is LOTTE 20.
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[8], line 4 1 naam = input("Naam? ") 2 leeftijd = int(float(input("Leeftijd? "))) 3 print(f"Over 4 jaar is {naam.upper()} {leeftijd + 4}.") ----> 4 print(f"{naam[-1] * leeftijd // 7}") TypeError: unsupported operand type(s) for //: 'str' and 'int'
Oefening 8¶
Zoek de fout! Deze code bevat precies één fout. Verbeter ze.
Gewenste uitvoer: Te betalen: 36 euro
De gebruiker typt: 3.
aantal = input("Hoeveel tickets? ")
print(f"Te betalen: {aantal * 12} euro")
Hoeveel tickets? 3 Te betalen: 333333333333 euro
Deel 2: Opsommingen en operatoren¶
Oefening 9¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
steden = ["Gent", "Brugge", "Leuven", "Hasselt", "Mons"]
print(steden[-3:])
print(f"{steden[0][-1]}{steden[2][1:3]} en {len(steden[1:-1])}")
['Leuven', 'Hasselt', 'Mons'] teu en 3
Oefening 10¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
lijst = [3, 8, 1, 8, 5]
lijst.remove(8)
print(lijst)
lijst.sort()
print(lijst)
a = lijst.pop()
print(a)
print(lijst)
lijst.append(a-lijst[0])
print(lijst)
[3, 1, 8, 5] [1, 3, 5, 8] 8 [1, 3, 5] [1, 3, 5, 7]
Oefening 11¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
getallen = [2, 4, 6]
print(getallen * 2)
print([getallen[-1]] + getallen[:1])
[2, 4, 6, 2, 4, 6] [6, 2]
Oefening 12¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
print(20 // 6 * 6 + 20 % 6)
print(-11 // 3, -11 % 3)
print(11 // -3)
20 -4 1 -4
Oefening 13¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
x = 5
y = 10
print(x > 7 or y > 7 and x == 5)
print((x > 7 or y > 7) and x == 4)
print(not (x < y) or y % x == 0)
True False True
Oefening 14¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
zin = "programmeren is een kunstenaarswerk"
woorden = zin.split()
a = woorden[0]
b = woorden[3][2:4]
c = woorden[3][2:4].replace("n", "N")
print(a,b,c)
print(len(zin), len(woorden), len(a), len(b))
programmeren ns Ns 35 4 12 2
Oefening 15¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
De gebruiker typt: Mechelen.
stad = input("Stad? ")
print(f"{stad[-3:].upper()}{stad[0].lower()}{len(stad) // 3}")
Stad? Gent ENTg1
Oefening 16¶
Zoek de fout! Deze code bevat precies één fout. Verbeter ze.
Gewenste uitvoer: Omtrek: 18
from math import pi
r = 3
print(f"Omtrek: {int(2 * math.pi * r)}")
--------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[17], line 3 1 from math import pi 2 r = 3 ----> 3 print(f"Omtrek: {int(2 * math.pi * r)}") NameError: name 'math' is not defined
Deel 3: Structuren (herhaling en keuze)¶
Oefening 17¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
for i in range(15, 0, -4):
print(f"({i % 4}|{i // 4})", end=" ")
(3|3) (3|2) (3|1) (3|0)
Oefening 18¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
saldo = 50
for bedrag in [-20, 35, -70, 10]:
if saldo + bedrag >= 0:
saldo += bedrag
print(f"ok: {bedrag} -> {saldo}")
else:
print(f"geweigerd: {bedrag}")
print(f"Eindsaldo: {saldo}")
ok: -20 -> 30 ok: 35 -> 65 geweigerd: -70 ok: 10 -> 75 Eindsaldo: 75
Oefening 19¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
getal = 4719
som = 0
while getal > 0:
som += getal % 10
getal = getal // 10
print(f"som = {som}, getal = {getal}")
som = 9, getal = 471 som = 10, getal = 47 som = 17, getal = 4 som = 21, getal = 0
Oefening 20¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout". Is het antwoord onlogisch? Geef dan aan waarom.
Voorspel de uitvoer voor elk van deze invoeren: 80 / 55 / 36 / 20.
snelheid = int(input("Snelheid? "))
if snelheid > 50:
boete = "klein"
elif snelheid > 70:
boete = "groot"
elif snelheid > 35:
boete = "geen, maar opletten"
else:
boete = "geen"
print(f"{snelheid} km/u: {boete}" )
Snelheid? 62 62 km/u: klein
Oefening 21¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
De gebruiker typt: banaan.
woord = input("Woord? ")
resultaat = ""
for letter in woord:
if letter in "aeiou":
resultaat = resultaat + letter.upper()
else:
resultaat = letter + resultaat
print(resultaat)
Woord? lepel lplEE
Oefening 22¶
Zoek de fout! Deze code bevat precies één fout. Verbeter ze.
Gewenste uitvoer: Kleinste: 2
getallen = [4, 9, 2, 7, -5, 1, 3]
kleinste = getallen[0]
for g in getallen:
if g < kleinste:
kleinste = g
print(kleinste)
print(f"Kleinste: {kleinste}")
2 -5 Kleinste: -5
Oefening 23¶
Zoek de fout! Deze code bevat precies één fout. Verbeter ze.
Gewenste uitvoer:
1: kat
2: hond
3: cavia
dieren = ["kat", "hond", "cavia"]
i = 0
while i < 4:
print(f"{i + 1}: {dieren[i]}")
i += 1
1: kat 2: hond 3: cavia
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) Cell In[24], line 4 1 dieren = ["kat", "hond", "cavia"] 2 i = 0 3 while i < 4: ----> 4 print(f"{i + 1}: {dieren[i]}") 5 i += 1 IndexError: list index out of range
Oefening 24¶
Zoek de fout! Deze code bevat precies één fout. Verbeter ze.
Gewenste uitvoer: Aantal e's: 2
De gebruiker typt: peper.
woord = input("Woord? ")
aantal = 0
for letter in woord:
if letter == "e":
aantal += 1
print(f"Aantal e's: {aantal}")
Woord? lepel Aantal e's: 0 Aantal e's: 1 Aantal e's: 1 Aantal e's: 2 Aantal e's: 2
Deel 4: Verdieping: geneste herhaling - bonusvragen¶
Oefening 25¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
for i in range(1, 4):
lijn = ""
for j in range(4 - i):
lijn += "*"
print(f"{i}{lijn}")
1*** 2** 3*
Oefening 26¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
for rij in range(2, 5):
for kolom in range(1, 4):
print(rij * kolom, end=" ")
print()
2 4 6 3 6 9 4 8 12
Oefening 27¶
Voorspel de uitvoer. Verwacht je een foutmelding? Schrijf dan gewoon "fout".
totaal = 0
for i in range(1, 4):
for j in range(i):
totaal += i
print(f"na i = {i}: totaal = {totaal}")
na i = 1: totaal = 1 na i = 2: totaal = 5 na i = 3: totaal = 14