Gegeven is een CSV-bestand, met als gedaante:

Verkoper; Data1; Data2; ...

(zie ook het voorbeeld onderaan de opgave)

Hierbij zijn de hoofdingen 'Data1, 'Data2', enz. placeholders (m.a.w. in de echte bestanden staan andere hoofdingen). De hoofding 'Verkoper' komt als eerste hoofding in het bestand voor.
In deze oefening maken we een klasse Werkblad, waarbij de inhoud van het werkblad in dit CSV-bestand te vinden is. Bedoeling is om een rij toe te voegen aan het bestand, waarbij de waarde van elke cel in die rij (behalve de eerste cel) een functie is van waarden in dezelfde kolom. Programmeer in de klasse Werkblad:

De bestanden die Dodona gebruikt in de testcases vind je in het gecomprimeerde bestand ToevoegenVanRijen.zip1.

Voorbeeld

Inhoud 'Verkoop_0.csv'

Verkoper;Denemarken;Duitsland;Frankrijk;Belgie
Verstraete, Werner;696,0;786,0;226,0;628,0
Cornelissen, Sofie;950,0;1699,0;1569,0;1681,0
Jansens, Quinten;748,0;635,0;1855,0;653,0
Vrielinck, Patrick;495,0;271,0;1504,0;1407,0
Vergote, Erwin;1020,0;313,0;465,0;1846,0
Nachtegaele, Zoe;1045,0;1785,0;1573,0;523,0
Truwant, Thomas;797,0;1315,0;694,0;772,0

blad = Werkblad('Verkoop_0_in.csv')
print(blad)
#[['Verkoper', 'Denemarken', 'Duitsland', 'Frankrijk', 'Belgie'], 
  ['Verstraete, Werner', '696,0', '786,0', '226,0', '628,0'], 
  ['Cornelissen, Sofie', '950,0', '1699,0', '1569,0', '1681,0'], 
  ['Jansens, Quinten', '748,0', '635,0', '1855,0', '653,0'], 
  ['Vrielinck, Patrick', '495,0', '271,0', '1504,0', '1407,0'], 
  ['Vergote, Erwin', '1020,0', '313,0', '465,0', '1846,0'], 
  ['Nachtegaele, Zoe', '1045,0', '1785,0', '1573,0', '523,0'], 
  ['Truwant, Thomas', '797,0', '1315,0', '694,0', '772,0']]"

print(blad.get_kolom_hoofding())
#['Verkoper', 'Denemarken', 'Duitsland', 'Frankrijk', 'Belgie']

print(blad.get_kolom(2))
#['786,0', '1699,0', '635,0', '271,0', '313,0', '1785,0', '1315,0']

print(blad.get_rijnummer('Cornelissen, Sofie')) #1

f1 = lambda s:sum(s)/len(s)
blad += ('Gemiddelde[5:6]', 5, 6, f1)

str(blad)
#[['Verkoper', 'Denemarken', 'Duitsland', 'Frankrijk', 'Belgie'], 
  ['Verstraete, Werner', '696,0', '786,0', '226,0', '628,0'], 
  ['Cornelissen, Sofie', '950,0', '1699,0', '1569,0', '1681,0'], 
  ['Jansens, Quinten', '748,0', '635,0', '1855,0', '653,0'], 
  ['Vrielinck, Patrick', '495,0', '271,0', '1504,0', '1407,0'], 
  ['Vergote, Erwin', '1020,0', '313,0', '465,0', '1846,0'], 
  ['Nachtegaele, Zoe', '1045,0', '1785,0', '1573,0', '523,0'], 
  ['Truwant, Thomas', '797,0', '1315,0', '694,0', '772,0'], 
  ['Gemiddelde[5:6]', '1045,0', '1785,0', '1573,0', '523,0']]"

f2 = lambda s:min(s)
blad += ('Minimum[3:6]', 3, 6, f2)


str(blad)
#[['Verkoper', 'Denemarken', 'Duitsland', 'Frankrijk', 'Belgie'], 
 ['Verstraete, Werner', '696,0', '786,0', '226,0', '628,0'], 
 ['Cornelissen, Sofie', '950,0', '1699,0', '1569,0', '1681,0'], 
 ['Jansens, Quinten', '748,0', '635,0', '1855,0', '653,0'], 
 ['Vrielinck, Patrick', '495,0', '271,0', '1504,0', '1407,0'], 
 ['Vergote, Erwin', '1020,0', '313,0', '465,0', '1846,0'], 
 ['Nachtegaele, Zoe', '1045,0', '1785,0', '1573,0', '523,0'], 
 ['Truwant, Thomas', '797,0', '1315,0', '694,0', '772,0'], 
 ['Gemiddelde[5:6]', '1045,0', '1785,0', '1573,0', '523,0'], 
 ['Minimum[3:6]', '495,0', '271,0', '465,0', '523,0']]"

blad.schrijf('Verkoop_0_out.csv')

Inhoud 'Verkoop_0_out.csv'

Verkoper;Denemarken;Duitsland;Frankrijk;Belgie
Verstraete, Werner;696,0;786,0;226,0;628,0
Cornelissen, Sofie;950,0;1699,0;1569,0;1681,0
Jansens, Quinten;748,0;635,0;1855,0;653,0
Vrielinck, Patrick;495,0;271,0;1504,0;1407,0
Vergote, Erwin;1020,0;313,0;465,0;1846,0
Nachtegaele, Zoe;1045,0;1785,0;1573,0;523,0
Truwant, Thomas;797,0;1315,0;694,0;772,0
Gemiddelde[5:6];1045,0;1785,0;1573,0;523,0
Minimum[3:6];495,0;271,0;465,0;523,0