In deze oefening werken we met één lijst: puntenlijst
Dit is een lijst met tuples. Elk tuple bestaat uit twee elementen: een naam en een cijfer.
Voorbeeld: puntenlijst = [('jan', 19), ('wim', 12), ('sonja', 8), ('karen', 18), ('olga', 19), ('marcel', 7)]
namenlijst
Schrijf een functie namenlijst met één argument: een puntenlijst zoals hierboven gedefineerd.
De functie retourneert een alfabetisch geordende lijst met alle namen uit de puntenlijst. Als eenzelfde naam twee maal in de puntenlijst voorkomt, dan zit die ook twee maal in de namenlijst.
transformeer
Schrijf een functie transformeer met één argument: een puntenlijst zoals hierboven gedefineerd.
De functie retourneert de lijst waarbij elke naam met een hoofdletter gezet wordt en het cijfer (score op 20) omgerekend wordt naar een percentage.
beste
Schrijf een functie beste met één argument: een puntenlijst zoals hierboven gedefineerd.
De functie retourneert de naam van de student met de hoogste score. Als twee of meer studenten dezelfde (hoogste) score hebben, dan retourneert de functie een lijst met de namen van deze studenten in alfabetische volgorde.
bonuspunt
Schrijf een functie bonuspunt met twee argumenten: i) een puntenlijst zoals hierboven gedefinieerd en ii) een lijst met bonuspunten (getal 0, 1 of 2) voor elke student.
De functie retourneert een lijst die dezelfde vorm heeft als de oorspronkelijke puntenlijst. Elk cijfer wordt verhoogd met het overeenkomstig aantal bonuspunten. Randvoorwaarde is hier opnieuw (cfr oefening "Eindcijferberekening") dat een student niet via bonuspunten boven 18 kan uitkomen. Als dat wel het geval zou zijn, krijgt de student 18.
>>> namenlijst([('jan', 19), ('wim', 12), ('sonja', 8), ('karen', 18), ('olga', 19), ('marcel', 7)]) ['jan', 'karen', 'marcel', 'olga', 'sonja', 'wim'] >>> transformeer([('jan', 19), ('wim', 12), ('sonja', 8), ('karen', 18), ('olga', 19), ('marcel', 7)]) [('Jan', 95), ('Wim', 60), ('Sonja', 40), ('Karen', 90), ('Olga', 95), ('Marcel', 35)] >>> beste([('jan', 19), ('wim', 12), ('sonja', 8), ('karen', 18), ('olga', 19), ('marcel', 7)]) ['jan', 'olga'] >>> beste([('jan', 12), ('wim', 12), ('sonja', 8), ('karen', 18), ('olga', 19), ('marcel', 7)]) 'olga' >>> bonuspunt([('jan', 19), ('wim', 12), ('sonja', 8), ('karen', 18), ('olga', 19), ('marcel', 7)], [2, 2, 1, 1, 1, 0]) [('jan', 19), ('wim', 14), ('sonja', 9), ('karen', 18), ('olga', 19), ('marcel', 7)]