Herneem oefening schoonspringen1. Vertrek eventueel van de oplossing van die oefening. Pas de opgave aan en splits de oefening op in twee functies:

Opgave

Voorbeeld van lees_scores

Ingegeven scores: 20 40 80 50 "stop"
>>> lees_scores()
[20, 40, 80, 50]

Voorbeeld van bereken_score

>>> bereken_score([120,-8, 30,50,100,5]) 
40

Tips

Zoek in de API2 de extra mogelijkheden die je hebt voor een list.
Ik vind het juiste type niet voor de parameters van deze functie.
def lees_scores() -> list
def bereken_score(scores: list) -> int
Getallen inlezen tot "stop" wordt ingelezen: pseudocode
lees een invoer als tekst in
herhaal zolang de invoer niet "stop" is
   zet invoer om naar een geheel getal
   doe de gevraagde verwerking
   nieuwe invoer vragen
Hoe kan ik alle ingelezen waarden in een lijst stoppen?
  • Start met een lege lijst.
  • Elke ingelezen waarde, behalve "stop" voeg je toe aan die lijst
Moet ik in lees_score enkel scores tussen 0 en 100 bijhouden? Neen, alle ingelezen getallen worden in de lijst gestopt.
Hoe verwijder ik de scores die niet tussen 0 en 100 liggen? Je maakt hiervoor best een nieuwe lijst aan, die enkel de correcte scores bevat.
Kan ik verkeerde scores verwijderen met .remove? Dat is lastiger dan je denkt!
Je gebruikt waarschijnlijk de for-loop (for c in lijst:) om de getallen te overlopen. Als je dan iets verwijdert met .remove, wordt de lijst onmiddellijk aangepast en zal de loop een getal overslaan.
Hoe verwijder ik best de grootste en kleinste score? Twee mogelijkheden:
  • Orden de lijst en neem een slice zonder het eerste en laatste getal.
  • Bepaal het kleinste en grootste getal uit de lijst, en pas de som aan.