Enkel in te dienen indien je geen vrijstelling hebt gehaald voor het groepswerk
MatchAnalysis Deel 4 — Opslaan en inlezen
In dit deel voeg je functies toe om de PassGraph op te slaan naar een .txt-bestand en om opnieuw in te lezen.
Twee secties: [PLAYERS]
en [PASSES]
.
[PLAYERS]
<name>;<number>
<name>;<number>
[PASSES]
<sender_name> -> <receiver_name> : <nr_of_times>
Regels
- Commentregels beginnen met
#
en worden genegeerd.
- Lege regels worden genegeerd.
- Dubbele passes → tel gewichten op.
- Ongeldige input →
ValueError
.
Voorbeeldbestand
Team: Rode Duivels
[PLAYERS]
Eden Hazard;10
Moussa Dembele;19
Jan Vertonghen;5
Romelu Lukaku;9
[PASSES]
Eden Hazard -> Moussa Dembele : 7
Eden Hazard -> Romelu Lukaku : 2
Jan Vertonghen -> Romelu Lukaku : 1
Wat je moet doen (5 punten)
Breid je PassGraph
-klasse uit met:
1) Basisoperaties (1 punt)
- methode
players
- Geef een kopie van de spelerslijst terug.
- methode
passes(self)
- Geef alle passes in de graaf terug.
2) Constructor met pad-parameter (2 punten)
Signatuur
De constructor heeft als argument een path_naam(Str).
Gedrag
- Zonder path maakt de constructor een lege graaf.
- Met path leest de constructor onmiddellijk het tekstbestand in en vult de graaf.
Inlees-eisen
- Ondersteun commentregels (# …) en lege regels.
- Herken secties [PLAYERS] en [PASSES]; elke andere sectie → ValueError met korte boodschap.
- In [PLAYERS]: elke regel is name;number. Spaties rond velden weghalen met strip(). number moet naar int geconverteerd kunnen worden. Voeg spelers éérst toe met add_player.
- In [PASSES]: elke regel is sender_name -> receiver_name : nr. Spaties rond velden weghalen. nr moet een positief geheel getal zijn. Voeg passes toe met add_pass. Als dezelfde pass meerdere keren voorkomt, moet het totaal kloppen.
- Als een pass verwijst naar een speler die niet in [PLAYERS] staat → ValueError.
3) save_to_txt(self, path) (1 punt)
Slaat de volledige graaf op in exact het hierboven beschreven formaat.
Eisen
- Overschrijf het doelbestand indien het bestaat.
- Schrijf eerst [PLAYERS] (één speler per regel in de vorm name;number).
- Schrijf daarna [PASSES] (één pass per regel in de vorm sender -> receiver : nr).
- Volgorde mag je kiezen (bijv. spelers alfabetisch, passes per zender), maar wees consistent.
Testen (1 punt)
Schrijf een testscript dat:
- Een PassGraph opbouwt (minstens 4 spelers en 4 passes, waarvan 1 pass meerdere keren wordt toegevoegd).
- save_to_txt(“team.txt”) aanroept.
- Met de constructor een nieuwe graaf inleest:
g2 = PassGraph(“team.txt”)