Wo steht eigentlich der Kontostand?
Ein Hauptbuch (englisch Ledger) speichert keine Kontostände, sondern Zahlungen. Den Kontostand rechnet man aus, indem man alle Zahlungen von Anfang an nachrechnet.
So kann niemand einen Kontostand heimlich ändern. Er ergibt sich immer wieder aus der Liste, die jede Person nachprüfen kann.
Am Ende dieser Lektion
Notiz
Ich kann aus einer Liste von Zahlungen die Kontostände rechnen und zu große Zahlungen ablehnen.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Transaktion | eine Zahlung von einem Konto an ein anderes mit einem Betrag |
| Hauptbuch | die geordnete Liste aller Transaktionen |
| Kontostand | das Guthaben, das sich aus Start und Zahlungen ergibt |
| Doppelausgabe | dasselbe Guthaben wird zweimal ausgegeben |
| Startguthaben | der Kontostand, bevor die erste Zahlung gilt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Den Kontostand rechnet man durch Nachspielen
Das Hauptbuch beginnt mit einem Startguthaben für jedes Konto. Dann geht man die Zahlungen der Reihe nach durch. Von einem Konto wird abgezogen, einem anderen wird gutgeschrieben.
Reicht das Guthaben für die Zahlung nicht, wird sie abgelehnt. Das Konto bleibt, wie es ist, und es geht mit der nächsten Zahlung weiter.
Ein Beispiel mit vier Zahlungen
| Schritt | Zahlung | Asha | Ben | Cara | Ergebnis |
|---|---|---|---|---|---|
| Start | - | 10 | 5 | 0 | - |
| 1 | Asha an Ben, 4 | 6 | 9 | 0 | angenommen |
| 2 | Ben an Cara, 6 | 6 | 3 | 6 | angenommen |
| 3 | Cara an Asha, 8 | 6 | 3 | 6 | abgelehnt: Cara hat nur 6 |
| 4 | Ben an Cara, 3 | 6 | 0 | 9 | angenommen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Ausgabe des Labors ist englisch
Notiz
Das Skript balances.py gibt englische Wörter aus: balances und refused. Die Namen Asha, Ben und Cara und alle Zahlen sind die der Tabelle.
Dieselben vier Zahlungen im Labor rechnen
docker exec jupyter python3 steps/balances.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was das Skript ausgibt
Die erste Zeile zeigt die Kontostände: Asha 6, Ben 0 und Cara 9. Das ist genau die letzte Zeile der Tabelle.
Die zweite Zeile sagt, dass die Zahlung von Cara an Asha über 8 abgelehnt wurde. Cara hatte zu dem Zeitpunkt nur 6.
Eine Doppelausgabe fängt die Reihenfolge ab
Eine Doppelausgabe liegt vor, wenn jemand dasselbe Guthaben zweimal ausgeben will. Ben hat 5 und schickt 5 an Cara und 5 an Asha.
Das Hauptbuch hat eine feste Reihenfolge. Die erste Zahlung gilt, die zweite findet nur noch 0 vor und wird abgelehnt. Alle, die nachrechnen, kommen zum selben Ergebnis.
Eine Doppelausgabe nachspielen
konten = {"Ben": 5, "Cara": 0, "Asha": 0}
zahlungen = [("Ben", "Cara", 5), ("Ben", "Asha", 5)]
# Tauschen Sie die beiden Zahlungen und starten Sie neu.
for zahlung in zahlungen:
von = zahlung[0]
an = zahlung[1]
betrag = zahlung[2]
if konten[von] >= betrag:
konten[von] = konten[von] - betrag
konten[an] = konten[an] + betrag
print(von, "an", an, betrag, ": angenommen")
else:
print(von, "an", an, betrag, ": abgelehnt")
print(konten)
Was das Beispiel ausgibt
Die erste Zahlung heißt angenommen, die zweite abgelehnt. Am Ende steht Ben bei 0, Cara bei 5 und Asha bei 0.
Tauschen Sie die Zahlungen, und Asha bekommt das Geld statt Cara. Die Reihenfolge entscheidet. Darum muss die Kette für alle dieselbe Reihenfolge festlegen.
Ein häufiger Fehler
Warnung
Viele glauben, ein Kontostand stehe irgendwo und werde bei jeder Zahlung überschrieben. Im Hauptbuch steht nur die Liste der Zahlungen. Der Kontostand ist das Ergebnis des Nachrechnens und kann jederzeit neu entstehen.