Steuerrechner

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

Natürlich werde ich von einem Admin kontrolliert :) ich bin doch nur Praktikant
Aber schön wie sich hier gesorgt wird :> toll
BlackJack

@Pacome: Auf einem Raspi würde ich eine NFS- oder Samba-Freigabe einrichten oder auf einem anderen Linux-Rechner das Verzeichnis per sshfs einhängen und dann auf dem anderen Rechner arbeiten und von dort mit einem beliebigen Editor auf die Quelltexte zugreifen. Oder man startet auf dem Raspi einen VNC-Server und kann darin dann grafische Editoren verwenden.
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

@Pacome: ich glaube es gibt nur wenige Puristen, die den Komfort eines modernen Editors nicht zu schätzen wissen. Die graphische Oberfläche von Unix ist für Remote-Arbeiten ausgelegt, das heißt, das Programm kann irgendwo laufen, die Fenster erscheinen aber auf Deinem Desktop. SSH kann zudem das verwendete X-Protokoll tunneln. Zum anderen muß der Editor gar nicht auf dem PI laufen, Du kannst ja das Dateisystem remote mounten.
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

hallo, heute habe ich mich nochmal versucht ran zu setzen.

leider fehlt mir das wissen eine print funktion einzufügen -.-
ich habe es aus dem hundejahren rechner, den ich vorher abgeschrieben habe versucht nach zu vollziehen, meine Synapsen wollen sich aber nicht verknüpfen :(

Code: Alles auswählen

def steuern(einkommen):



        if einkommen <= 8004:
                steuer = 0
        elif einkommen <= 13469:
                y = (einkommen -8004.0)/10000.0
        elif einkommen <= 52881:
                z = (einkommen -13469.0)/10000.0
                steuer = (228.74 * z +2397.0)*z +1038.0
        elif einkommen <= 250730:
                steuer = einkommen * 0.42 - 8172.0
        else:
                steuer = einkommen * 0.44 - 15694
        return steuer
der code funktioniert glaube ich schonmal(wird keine fehlermeldung angezeigt, kann aber auch nicht benutzt werden wegen:) :) aber einen input und vorrangehende fragestellung muss ich noch inplementieren.

ALso wie verlange ich vom Benutzer eine Eingabe?
age = input("Alter des Hundes: ")
print <--------------- hat mir wie gesagt wenig geholfen
BlackJack

@Pacome: Eingaben vom Benutzer bekommt man in Python 2 mit `raw_input()` und in Python 3 mit `input()`. Die `input()`-Funktion von Python 2 sollte man dagegen *nicht* verwenden, die führt die Benutzereingabe nämlich als Python-Ausdruck aus. Das ist zum einen eine Sicherheitslücke und zum anderen führt das bei Fehleingaben vom Benutzer zu einer Ausnahme die ein Endnutzer normalerweise so gar nicht versteht.

Wenn man eine Zahl haben möchte, dann muss man die Zeichenkette die der Benutzer eingegeben hat noch mit der entsprechenden Funktion in eine Zahl umwandeln.

Und ein ``print`` ohne alles gibt eine Leerzeile aus. Du musst da schon einen Ausdruck hinschreiben der zu dem Wert ausgewertet wird, den Du angezeigt haben möchtest. Das wird doch bei dem Hundealterrechner nicht anders gewesen sein.
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

@BlackJack

Also ich habe mit einkommen = raw_input("Einkommen? ") versucht den input der variable einkommen zuzuordnen.... bei dem Hundejahren Rechner wurde dafür age verwendet, womit das programm auch problemlos arbeiten konnte.

bei meinem steuer rechner hat das leider nicht so gut funktioniert mit der Fehlermeldung: "IndentationError: expected an indented block" und einem pfeil bei der endung der raw_input variable, also vor dem = zeichen.
Die fehlermeldung hab ich an anderer stelle im Forum nun finden können als Einrückfehler?



Aber mal eine andere Sache.... wie ich feststellen musste, habe ich hier ja nur eine funktion eingetipt :) da ist natürlich kein wunder wenn ich kein input benötige?! :)
aber wie rufe ich die Funktion nun auf ^^ ich hab doch steuern defeniert oder nicht? Funktionieren tut es nur nicht und spuckt mir ein nicht vorhandenes Modul aus :(
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

@Pacome: ja, Einrückungen haben in Python eine Bedeutung. Sollte bei jeder Einführung in Python relativ am Anfang einmal erwähnt werden. Wenn Du Fehler im Code hast, wäre es gut, Du würdest den Code dazu auch posten.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich rate dir nochmal einen Schritt zurueck zu machen und ein Tutorial durchzuarbeiten, zB das in der Python Dokumentation. Bei dir scheitert es noch an Grundsaetzlichem.

Wir koennen dir jetzt zwar erklaeren, dass du falsch einrueckst und wie du deine Funktion aufrufen kannst, aber ich befuerchte du stehst dann direkt vor dem naechsten Problem.
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

@cofi
also die Codefragmente hab ich mir ja auch nicht aus meinen Fingern gesaugt: http://www.python-kurs.eu/bedingte_anweisungen.php

das Einrücken eine Optische Rolle Spielt wurde in dem Tutorial dachte ich nur erwähnt.
@sirius3 ich habe die Funktion schon etwas weiter oben gepostet, aber kann das gerne nochmal wiederholen :)

Code: Alles auswählen

def steuern(einkommen):


        if einkommen <= 8004:
                steuer = 0
        elif einkommen <= 13469:
                y = (einkommen -8004.0)/10000.0
        elif einkommen <= 52881:
                z = (einkommen -13469.0)/10000.0
                steuer = (228.74 * z +2397.0)*z +1038.0
        elif einkommen <= 250730:
                steuer = einkommen * 0.42 - 8172.0
        else:
                steuer = einkommen * 0.44 - 15694
        return steuer
Fehler sind da glaube ich keine mehr vorhanden, die wurden auf seite 1 meines Theads schon abgefertigt..... mein Problem ist das ich keinen raw_input() oder input() basteln kann :( bzw die Funktion die ich da abgeschrieben habe einfach nicht benutzen kann da mir ein undefeniertes Modul bei steuern ausgespuckt wird -.-
mit dem Abschnitt input und raw_input hab ich mich auch gerade befasst..... aber leider lässt sich für meine Synapsen keine Verknüpfung finden -.-
BlackJack

@Pacome: Du schreibst zu viel ab ohne selber Code zu schreiben und zu verstehen würde ich sagen. Wie man beim verwenden von `raw_input()` eine Fehlermeldung zu einem nicht definierten Modul `steuern` bekommen kann ist mir ein Rätsel. Du müsstest bei so etwas schon verraten *was* genau Du gemacht hast und was *genau* die Fehlermeldung war. Inklusive Traceback.
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

das ist ja schon der 3. Code den ich mir abschreibe.... ich kann schon nachvollziehen das sich keiner mit meinem Wissensstand über Python mit der Sache befassen möchte weil ich mir das selbst erarbeiten muss! das will ich ja auch -.- aber dafür brauch ich doch auch funktionierende Programme. Ist ja nun nicht so das ich jeden Tag ein Code abtippe und mich damit programmierer schimpfe -.- ich gehe auch jeden Code durch um die einzelnen Bausteine zu verstehen...
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

@BlackJack

du hast mich falsch verstanden weil ich mich auch echt dumm ausgedrückt habe.....

die Fehlermeldung zu einem nicht definierten Modul habe ich wenn ich die Funktion steuern ausführen möchte weil ich doch das Script da oben so defeniert habe......
und nicht beim input -_- wenn ich einen input einfügen möchte, bekomme ich eine Fehlermeldung bei der variablen.... was für mich einfach unverständlich ist was das Problem für ein namen meiner variablen ist >.<
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

Code: Alles auswählen

def steuern(einkommen):

einkommen = raw_input("Einkommen? ")
print einkommen
        if einkommen <= 8004:
                steuer = 0
        elif einkommen <= 13469:
                y = (einkommen -8004.0)/10000.0
        elif einkommen <= 52881:
                z = (einkommen -13469.0)/10000.0
                steuer = (228.74 * z +2397.0)*z +1038.0
        elif einkommen <= 250730:
                steuer = einkommen * 0.42 - 8172.0
        else:
                steuer = einkommen * 0.44 - 15694
        return steuer
Hier nochmal der Code mit Input Anweisung.....
und die Fehlermeldung:
File "einkommenssteuer", line 3
einkommen = raw_input("Einkommen? ")
^
IndentationError: expected an indented block

und selber Schreiben würde ich ja ganz gerne mal :( wenn ich mir mal klar werden könnte womit ich mich befassen kann.
Nur wer gibt mir schon eine Aufgabe mit der ich mich mal auseinander setzen muss :)
Also muss ich mir selbst eine Fragestellung überlegen..... aber bevor ich mir an einer Aufgabe die Zähne ausbeise, lerne ich erstmal einpa Grundlagen :)
Und wie soll ich bitte besser lernen als durch wiederholung? eigene Codes werde ich anfangen zu gestalten wenn ich die Grundlagen mir angeeignet habe
Bis dahin ist es halt Mühsam........ ich weiß >.<
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Pacome hat geschrieben:

Code: Alles auswählen

def steuern(einkommen):

einkommen = raw_input("Einkommen? ")
print einkommen
Wenn du eine Funktion schreibst, dann sollte sie auch Code enthalten. Da du die auf def folgenden Codezeilen nicht eingerückt hast geht Python davon aus, dass diese kein Teil der Funktion sein sollen. Damit hättest du aber eine Funktion ohne Code und das ist nicht zulässig.

Einrückungen sind in Python nicht nur optische Gliederung sondern sie sind elementar für den Programmfluss.
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

@Pacome: wenn Du nicht genau zeigst, was Du machst, kann man Dir ja auch nicht helfen, von "nicht wollen" kann da gar keine Rede sein. Du kannst nicht Code, der außerhalb der Funktion stehen soll, in die Funktion hineinschreiben. Was hast Du Dir gedacht, als Du die Zeilen 3 und 4 dort hingeschrieben hast? Das erzeugt aber auch nicht den Fehler "steuern sei ein undefiniertes Modul".
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

@Sirius3
Nein diese Fehlermeldung wird erzeugt wenn ich steuern als Funktion ausführen möchte...... in dem ich bei Python einfach steuern eintippe
Danke für die Hinweise zum Einrücken. Ich werde mich Morgen damit weiter befassen -.-
Benutzeravatar
kbr
User
Beiträge: 1501
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Pacome: Die Zahlen zur Berechnung der Steuer stimmen auch nicht, zumindest sind es nicht die Werte für 2014-2015. Auch die Berechnung der unteren Steuerbelastungen, oberhalb des Freibetrags, werden nicht funktionieren.
Die aktuelle Formel wird Dir angezeigt, wenn das Ergebnis der Einkommensteuerberechnung des BMF ausgegeben wird:
https://www.bmf-steuerrechner.de/ekst/?
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

kbr hat geschrieben:@Pacome: Die Zahlen zur Berechnung der Steuer stimmen auch nicht, zumindest sind es nicht die Werte für 2014-2015.
Das ist für das Testprogramm eines Anfängers vermutlich nicht so entscheidend. Wichtiger ist es, dass es einen Weg durch die Funktion gibt, bei dem steuer gar nicht gesetzt wird und wodurch das anschließende return steuer folglich nicht funktioniert.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Pacome hat geschrieben:Danke für die Hinweise zum Einrücken. Ich werde mich Morgen damit weiter befassen -.-
Auch wenn ich python-kurs.eu nicht für so gelungen halte*¹, die Strukturierung wird schon sehr weit vorne im Kurs angesprochen: Blöcke.


[*¹] Der "Public, Protected, Private"-Blödsinn.
Benutzeravatar
kbr
User
Beiträge: 1501
Registriert: Mittwoch 15. Oktober 2008, 09:27

/me hat geschrieben:Das ist für das Testprogramm eines Anfängers vermutlich nicht so entscheidend. Wichtiger ist es, dass es einen Weg durch die Funktion gibt, bei dem steuer gar nicht gesetzt wird und wodurch das anschließende return steuer folglich nicht funktioniert.
Da kann ich nur zustimmen, denn schließlich soll das ganze ja mit einem Erfolgserlebnis enden. Wobei dieses umso schöner ist, wenn am Ende, wenn der Programmablauf funktioniert, dann auch die richtigen Zahlen rauskommen.
Antworten