16d Proberen tot het lukt
Deze les gebruikt break, uit Stoppen met break.
Vraag je iemand om een getal, dan wil je het meestal opnieuw vragen als het
misgaat, in plaats van op te geven. Dat doe je met try in een loop:
while True:
tekst = input("Hoe oud ben je? ")
try:
leeftijd = int(tekst)
break
except ValueError:
print("Dat is geen getal, probeer het nog eens.")
print(f"Volgend jaar ben je {leeftijd + 1}.")
while True:blijft eindeloos herhalen.- Lukt
int(tekst), dan komt Python bijbreaken stopt de loop. - Lukt het niet, dan springt Python naar
except.breakgebeurt dan niet, en de loop vraagt opnieuw.
Zonder input() zie je hetzelfde met een lijst pogingen, alsof iemand drie
keer iets typt:
pogingen = ["tien", "", "10"]
for tekst in pogingen:
try:
leeftijd = int(tekst)
break
except ValueError:
print(f"'{tekst}' is geen getal, probeer het nog eens.")
print(f"Volgend jaar ben je {leeftijd + 1}.")
Uitvoer:
'tien' is geen getal, probeer het nog eens.
'' is geen getal, probeer het nog eens.
Volgend jaar ben je 11.
Opdracht 16d.1: Alleen de getallen
Tel alle teksten uit de lijst op die een getal zijn. Sla de rest over.
Verwachte uitvoer:
Samen: 10
teksten = ["3", "vier", "5", "", "2"]
som = 0
for tekst in teksten:
som += int(tekst)
print(f"Samen: {som}")Klik hier voor een tip.
Zet som += int(tekst) in een try. In het except-blok hoeft niets te
gebeuren, maar een blok mag niet leeg zijn: schrijf daar continue.
Klik hier voor de oplossing.
teksten = ["3", "vier", "5", "", "2"]
som = 0
for tekst in teksten:
try:
som += int(tekst)
except ValueError:
continue
print(f"Samen: {som}")
Uitvoer:
Samen: 10
Opdracht 16d.2: Een gemiddeld cijfer
Bereken het gemiddelde van de cijfers die float() kan lezen. Tel ook hoeveel
er zijn overgeslagen.
Verwachte uitvoer:
Gemiddelde: 7.75 (2 overgeslagen)
cijfers = ["7.5", "8", "zes", "6,5"] goed = [] fout = 0 # Schrijf hier je loop print(goed, fout)
Klik hier voor een tip.
Lukt float(cijfer), dan gaat het getal in goed met append. Lukt het
niet, dan tel je fout += 1. Het gemiddelde is daarna
sum(goed) / len(goed), met :.2f voor twee cijfers achter de punt.
Klik hier voor de oplossing.
cijfers = ["7.5", "8", "zes", "6,5"]
goed = []
fout = 0
for cijfer in cijfers:
try:
goed.append(float(cijfer))
except ValueError:
fout += 1
print(f"Gemiddelde: {sum(goed) / len(goed):.2f} ({fout} overgeslagen)")
Uitvoer:
Gemiddelde: 7.75 (2 overgeslagen)