Herneem de oefening
Vervoer:
Informatie uit csv-bestand verwerken.
Nu kan het bestand niet bestaan, of het kan lijnen bevatten met foute informatie. Volgende fout-afhandeling is
gewenst voor de functie aantal_overladen(bestandsnaam)
:
- De functie mag 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 geen fout krijgt hierdoor, maar 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 analyseert van het
bestand. 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 MT is, dus ook niet overladen.
- als de regel WEL met MT start, maar de regel kan niet juist geparsed worden.
- als er geen fouten staan in de regel en de truck is niet overladen.
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.