Brutto-Netto-Rechner programmiert. Was haltet Ihr davon?
Ich habe lerne seit maximal 1 Woche Python und habe gerade interessenshalber ein Brutto-Netto-Rechner programmiert.
was haltet Ihr davon und habt Ihr Verbesserungsvorschläge?
Freue mich voll, habe das alleine ohne jegliche Hilfe und ohne vollwertigen Programmierkenntnissen geschafft.
Das einzige mal wo ich Hilfe brauchte war beim aufrunden bzw. anzeigen von nur 2 Nachkommerstellen. Ich kannte dieses f“ und geschweifte Klammern noch nicht, daher habe ich ChatGPT gefragt. Ich war mir sicher dass dies wie beim slicen von indexen ist also mit : aber wusste nicht wie es genau gemacht wird.
Der Rechner ist auf mich abgestimmt, also dass soll jetzt nichts sein was allgemein für jeden ist. Ich muss nur eintragen wie viel Brutto ich ca. erwarte und kann immer einsehen wie viel genau mir übrig bleibt.
Auf YouTube gibt es ein 6 Stunden Video mit dessen Hilfe ich Python lerne bin erst so zwischen 1-2 Stunden.
2 Antworten
Stilistisch: Benutze längere Variablennamen. Statt kv lieber krankenversicherungProzent, statt b lieber krankenversicherungBetrag.
Zeile 13-17: (brutto *float(x)) /100 in eigen methode auslagern
Inhaltlicht: Dein Rechner ist falsch. Sozialversicherungsbeiträge sind gedeckelt, Einkommenssteuer wird nach Abzug der Sozialversicherung berechnet, Einkommensteuer ist keine fester Wert. Da kannst Du noch jede Menge verfeinern.
Ich finde, z.B. "kv" ist ein vernünftiger Name, da die Abkürzung auch auf Gehaltsabrechnungen verwendet wird.
Generell sind Abkürzungen nicht schlecht, wir verwenden viele Abkürzungen wie TN, TNM, EST und weitere, die sind einfach gängig in unseren Projekten. Das alles auszuschreiben würde zu ewig langen und unleserlichen Namen führen.
Ähnlich sehe ich es auch hier: Wenn es gängige Abkürzungen sind (und für mich klingt es danach), dann sind diese Abkürzungen mMn. korrekt.
Allerdings sollte dann eher die "b"-Variable in "kv" umbenannt werden, weil auf den Abrechnungen unter "KV" auch nur der Betrag steht und nicht der Abzug in Prozent. Hier kenne ich mich aber nicht gut genug aus, ich würde es davon abhängig machen, was in diesem Umfeld üblich ist.
Und ja, "b" ist ein furchtbarer Name ^^ Ggf. wäre die Variable aber gar nicht nötig gewesen, man hätte die Berechnungen auch direkt inlinen und umbrechen können (ich gehe davon aus, die Sprache erlaubt das?). Gerade bei so kompakten Berechnungen kann das sogar besser bzw. leichter verständlich sein.
Daher würde ich auch keine eigene Methode aus den Teil-Schritten machen. Die Berechnung ist an sich sehr einfach und leicht zu überblicken, das in eine Methode auszulagern könnte sogar schädlich sein, weil dann nicht auf Anhieb erkennbar ist, was es tut. In dem Fall macht das vermutlich kaum einen Unterschied, aber ganz generell ist das schon ein Thema. Außerdem ermöglicht das bestimmten Compilern (der C#-Compiler tut das) weitere Optimierungen. Das hier ist kein C#, aber mir geht's um Generell.
Aber das hängt natürlich alles davon ab, wie die korrigierte Berechnung am Ende aussieht. Deine inhaltliche Kritik klingt aber nicht danach, dass die Berechnung sich groß verändern würde, vielleicht die Reihenfolge und die Prozentwerte, aber im Wesentlichen bleibt es gleich. Aber wie gesagt: Dafür kenne ich mich nicht gut genug damit aus.
Ja, weil die Prozentwerte für dein Brutto stimmen. ls soll Lohnsteuer heißen richtig? 0,5 ist viel zu wenig für einen Vollzeitjob.
Spiel mal mit den Zahlen rum und Vergleich die mit einem Onlinerechner. Bei anderem Brutto wird das nicht mehr stimmen.
Das waren die werte aus meiner Ausbildung 2 Lehrjahr bei 1433€ brutto stand bei Lohnsteuer 7,38
Bei ls steht auf dem Screenshot aber 0,55. Die halte ich bei 1400 brutto auch für realistisch. Das ist insgesamt auf jeden Fall ein einen Tick komplizierter zu berechnen, aber mach machbar und eine schöne Übung. Hier mal ein paar Begriffe die Du googlen kannst um das genauer zu berechnen: Beitragsbemessungsgrenze, Grundfreibetrag, Grenzsteuersatz. Wenn Du meinst Du hast es, dann vergleiche Deine Ergebnisse mal mit einem Onlinerechner: https://www.brutto-netto-rechner.info/
Die Variablen sind schlecht benannt, wenn jemand anderes den Code anguckt ist es vielleicht schwer die Benennungen nachzuvollziehen.
Die Konvertierung der Variablen bei den Berechnungen ist redundant, da diese bereits Floats sind.
Bei der Eingabe des Gehalts gibt es keine Ueberpruefung was da eingegeben wurde. Du koenntest es mit Try Block besser umsetzen.
Allgemein passiert in deinem Code aktuell alles "in einem Rutsch". Das ist fuer solche kleinen Skripte okay, man sollte sich jedoch angewoehnen seinen Code in verschieden Funktionen aufzuteilen.
Sonst ganz solide eigentlich
Try und block habe ich noch nicht gelernt. Also alles was ich gelernt habe waren halt print, string, int, floats, if, elif, else, while und sowas wie hat es einen Rest, +, -, :
Es kommt aber genau der Wert raus wie er auch bei mir auf der Abrechnung ist.