Dit is een inleidende oefening voor het inlezen van een csv-bestand.
We vertrekken van een zeer eenvoudige csv-bestand met 3 kolommen: Naam, Vak en Cijfer. Vervolgens komen 10 datarijen met cijfers voor bepaalde studenten. Het bestand ziet er zo uit:
puntenlijst
Schrijf een functie puntenlijst met één argument: de naam van een bestand (string).
De functie leest het bestand in met de opgegeven naam en zet de gegevens om naar een geneste lijst:
vakken
Schrijf een functie vakken met één argument: de naam van een bestand (string).
De functie leest het bestand in en geeft een alfabetisch gesorteerde lijst terug van alle vakken die voorkomen in het csv-bestand. Elk vak komt maar één keer voor.
De functie retourneert een lijst met strings.
cijfer
Schrijf een functie cijfer met drie argumenten: de naam van een student (string), de naam van een vak (string) en de naam van een bestand (string).
De functie leest het bestand in en geeft het cijfer (int) van de student voor het opgegeven vak. Als het vak niet voorkomt, dan retourneert de functie de string "vak onbekend". Als het vak wel voorkomt, maar de opgegeven student heeft geen cijfer voor dat vak, dan komt er "niet deelgenomen".
Het bestand is beschikbaar in het working directory van Dodona.
Als je de oefening lokaal wilt maken (in PyCharm of in een Jupyter Notebook), dan moet je het bestand downloaden en bewaren in dezelfde map als je .py of .ipynb bestand.
Het bestanden kan je hier downloaden:
>>> puntenlijst("punten.csv") [['Jeroen', 'Programmeren', 18], ['Kim', 'Programmeren', 12], ['Jeroen', 'Databanken', 12], ['Jeroen', 'Stage, rapportering en communicatietraining', 12], ['Laure', 'Programmeren', 10], ['Kim', 'Databanken', 16], ['Laure', 'IT-infrastructuur', 12], ['Laure', 'Stage, rapportering en communicatietraining', 18], ['Pieter', 'Programmeren', 14], ['Pieter', 'Databanken', 16]] >>> vakken("punten.csv") ['Databanken', 'IT-infrastructuur', 'Programmeren', 'Stage, rapportering en communicatietraining'] >>> cijfer('Jeroen', 'Programmeren', 'punten.csv') 18 >>> cijfer('Jeroen', 'Wiskunde', 'punten.csv') 'vak onbekend' >>> cijfer('Els', 'Programmeren', 'punten.csv') 'niet deelgenomen'