Het doel in deze vraag is om een bankensysteem te ontwikkelen waarin een saldo bijgehouden wordt. Bedragen worden steeds opgegeven via een tuple van 2 gehele getallen, namelijk een aantal euro en een aantal eurocent. Je mag aannemen dat bedragen die zo voorgesteld worden steeds positief zijn, en het aantal eurocent strik kleiner is dan 100. Het bankensysteem laat toe om het saldo van een persoon aan te passen, en om geld te transferen van persoon A naar B.
Programmeer in de klasse Bank
het volgende:
__str__()
levert een string-gedaante op. Om deze te construeren, bouw
je een lijst van tuples. Deze lijst noemen we hierna $$\verb!klant_gegevens!$$. Elk van de tuples uit
$$\verb!klant_gegevens!$$ bestaat uit 2 componenten, namelijk de naam van een klant
(type str
) en zijn/haar saldo (type float
). De volgorde in deze lijst
is alfabetisch, geordent volgens de standaard ingebouwde sorted()
-functie. Elk tuple
wordt omgezet naar de gedaante $$\verb!naam_klant:saldo!$$, waarbij het saldo met 2 decimalen na de komma
voorgesteld wordt. Deze strings worden voor elk tuple opgebouwd, en gescheiden door een komma
aaneengeschakeld tot de string $$\verb!saldo!$$.
De string-gedaante van de bank wordt uiteindelijk opgebouwd als $$\verb![naam_bank,saldo]!$$__repr__()
-methodetransfer()
heeft 3 argumenten, namelijk:
None
), maar het gevolg van
de oproep is dat er eventueel een transfer van geld tussen 2 personen kan doorgaan.
a = Bank('Bank1',2,50) str(a) # '[Bank1,]' b = Bank('Bank2',2,50) c = Bank('Bank1',2,50) a == b # False a == c # True a == eval(repr(a)) # True a == eval(repr(b)) #False for k in zip(['Jan', 'Filip', 'Pieter', 'Jan'],[10, 20, 30, 40],[50, 0, 50, 0]): ... a += (k[0],(k[1],k[2])) str(a) # '[Bank1,Filip:22.50,Jan:53.00,Pieter:33.00]' for k in zip(['An', 'Jan', 'Filip', 'Pieter'],[10, 20, 20, 30],[50, 50, 0, 10]): ... a -= (k[0],(k[1],k[2])) str(a) # '[Bank1,An:-8.00,Filip:2.50,Jan:32.50,Pieter:2.90]' a.transfer('Jan','Filip',(10, 20)) str(a) # '[Bank1,An:-8.00,Filip:12.70,Jan:22.30,Pieter:2.90]'