De bestanden vervoer.csv1 en vervoer_kort.csv2 bevatten informatie over voertuigen. Bewaar beide bestanden in dezelfde folder als de .py bestanden.
Beide bestanden werden in Excel aangemaakt. Open het bestand vervoer.csv in Excel, dan zie je dat er 4 kolommen staan met gegevens. De extensie .csv staat dan ook voor `comma separated values'. (Sluit Excel, dit was enkel om te illustreren dat je zo gegevens kan uitwisselen tussen verschillende toepassingen.)

Bekijk nu het bestand vervoer.csv in VSCode, dan zie je dat een kommapunt (;) gebruikt werd om de kolommen te scheiden.

Elke regel van dit bestand voldoet aan één van volgende stramienen:

TREIN;aantalPassagiers;maxSnelheid;internationaal
TR;gewicht_leeg;gewicht_lading;
MT;gewicht_leeg;gewicht_lading;max_gewicht_lading 
Een regel die het eerste stramien volgt, bevat gegevens voor een trein. Het tweede stramien legt de structuur vast voor de gegevens van een gewone truck; het derde stramien geldt voor een truck met maximale lading.

Schrijf volgende functies:

  1. De functie tel(soort,bestandsnaam) telt hoeveel voertuigen er zijn van de opgegeven soort (TREIN,TR,MT) in het opgegeven bestand. Dit aantal wordt teruggegeven.
  2. De procedure print_type_treinen(bestandsnaam) schrijft voor elke trein in het gegeven bestand het laatste stukje informatie uit. Dat is het stukje dat aangeeft of de trein internationaal is. (Verwerk enkel de treinen in het opgegeven bestand!)
  3. De functie aantal_overladen(bestandsnaam) telt hoeveel trucks met maximale lading "overladen" zijn. Dit aantal wordt teruggegeven.
    Een truck is "overladen" als gewicht_lading + gewicht_leeg > max_gewicht_lading .

Voorbeelden

>>> tel('TR', "vervoer.csv")
171

>>> print_type_treinen("vervoer_kort.csv")
nee
internationaal

>>> aantal_overladen('vervoer_kort.csv')
4

Opmerking Dodona Tutor

De Dodona Tutor werkt enkel voor het bestand vervoer_kort.csv. Andere problemen los je beter op in VSCode.

Tips

Ik vind het juiste types niet voor de parameters van deze functies/procedures.
def tel(soort: str, bestandsnaam: str) -> int:
def print_type_treinen(bestandsnaam: str) -> None:
def aantal_overladen(bestandsnaam: str) -> int:
Hoe knip ik het eerste deeltje uit een lijn? Dit kan op twee manieren:
  • Zoek de positie van ";" en gebruik "string slicing".
  • Splits de lijn met behulp van de methode split(";"). Haal het eerste deeltje uit de lijst.
Hoe knip ik het laatste deeltje uit een lijn? Dit kan op twee manieren:
  • Gebruik rfind om van achter naar voor te zoeken en gebruik "string slicing".
  • Splits de lijn met behulp van de methode split(";"). Haal het laatste deeltje uit de lijst.
Hoe kan ik de twee middelste deeltjes uit de lijn knippen? Dit doe je best met een lijst:
  • Splits de lijn met behulp van de methode split(";"). Haal de middelste deeltjes uit de lijst.