Herneem de oefening
Vervoer:
Informatie uit csv-bestand verwerken.
Nu is het mogelijk dat het bestand niet bestaat, of het bestand kan lijnen
bevatten met foute informatie. Volgende foutafhandeling is
gewenst voor de functie aantal_overladen(bestandsnaam)
:
- De functie moet elke mogelijke fout zelf opvangen - de functie mag dus nooit een fout opwerpen.
- Als het bestand niet gevonden wordt, geeft de functie 0 terug.
- Het bestand kan lijnen bevatten die niet voldoen aan het stramien
(te weinig of teveel kolommen - verkeerde waarden voor getallen).
Zorg dat je hierdoor geen fout krijgt: negeer
de regels die fouten bevatten, en ga
verder met de verwerking van het bestand.
Opdracht
- Schrijf eerst de logische functie
is_truck_overladen
die één
regel van het bestand analyseert.
Elke fout die daarbij voorkomt wordt in deze functie opgevangen. De functie
geeft False:
- als de regel NIET met MT start:
dit is zeker geen "truck met maximale lading", en dus ook niet overladen.
- als de regel WEL met MT start, maar de regel heeft niet het juiste aantal kolommen.
- als in een bepaalde kolom die een getal moet bevatten, geen correct getal staat.
- als de truck niet overladen is.
De functie geeft dus enkel True als de lijn correcte informatie bevat
over een truck (MT) die overladen is.
- Pas de functie
aantal_overladen(bestandsnaam)
aan. Ze gebruikt de functie
is_truck_overladen
voor elke regel van het bestand en
zorgt voor de fout-afhandeling die hiervoor werd beschreven.
Opmerking: Voeg zelf lijnen toe in het bestand om te controleren of de foute lijnen herkend worden, en de
functie niet stopt.
Voorbeelden van is_truck_overladen
>>> is_truck_overladen("MT;2696;1145;4504;577")
False
>>> is_truck_overladen("MT;578;57gf;587")
False
>>> is_truck_overladen("TR;1000;300")
False
>>> is_truck_overladen("MT;1000;5000;5500")
True
Tips
Ik vind het juiste type niet voor de parameters en de return-waarde van de functie
is_truck_overladen
.
def is_truck_overladen(lijn: str) -> bool:
Wat moet er gebeuren in de functie is_truck_overladen
als de lijn geen informatie bevat van een
MT?
Dan geef je direct False
terug
Kan ik alle fouten in de functie is_truck_overladen
opvangen met één
try - except
- statement?
Ja! van zodra er iets fout gaat zal je onmiddellijk naar het except
-blok gaan, waar je
False
teruggeeft.
Hoe kan ik de naam van de fout kennen als de lijn fouten bevat?
Lok de fout uit door de functie aan te roepen met een lijn die fouten bevat. De naam van de fout wordt getoond.
Op de API vind je ook de foutnamen.
Waar zet ik return True
in de functie is_truck_overladen
?
Dit kan als laatste statement in het try
-blok.
Welke foutafhandeling moet dan nog worden uitgewerkt in de functie aantal_overladen
?
Hier controleer je of het bestand bestaat en correct geopend wordt. Indien niet, dan geeft de functie 0 terug.
Hoe bepaal ik dan het aantal overladen trucks in de functie aantal_overladen
?
Overloop elke lijn van het bestand, en gebruik de functie is_truck_overladen
om te controleren of de lijn
informatie bevat van een overladen truck.