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.
Benutzeravatar
sparrow
User
Beiträge: 4144
Registriert: Freitag 17. April 2009, 10:28

@Pacome:
BlackJack meint damit, dass Windows-Benutzer Konsolenprogramme oft nicht in einer Konsole ausführen, sondern zum Beispiel mit einem Doppelklick starten.
Dann öffnet sich zwar auch eine Konsole, aber die verschwindet sobald das Programm beendet ist.
Der richtige Weg wäre eine Konsole zu öffnen und in dieser Konsole das Programm zu starten. Die bleibt dann auch offen, wenn man das Programm beendete. Allerdings ist das benutzen einer Konsole heute nicht mehr so gebräuchlich wie früher, weshalb der überwiegende Teil der Anwender nicht umgehen kann. Das beschränkt sich nicht nur auf die Windows-Welt.
BlackJack

@Pacome: Gibt es einen Grund warum Du einen Texteditor in der Konsole verwendest und keinen grafischen? Denn bei denen kann man in der Regel den gesamten Quelltext einfach auswählen und in die Zwischenablage kopieren und dann von dort im Browser in das Texteingabefeld.

Der `raw_input()` am Ende von Programmen wird normalerweise von Windowsprogrammierern gemacht weil die dort Konsolenprogramme nicht in einer vorhandenen Konsole starten, also eine die schon offen ist, sondern mit der Maus auf das Icon der Datei mit dem Quelltext klicken. Dann geht auch eine Konsole auf, die geht aber nach Programmende oder wenn im Programm eine Ausnahme auftritt sofort wieder zu, so dass man Ergebnisausgaben oder Fehlermeldungen gar nicht beziehungsweise nur für Sekundenbruchteile sieht. Deshalb gibt es diese Unsitte am Ende vom Benutzer noch mal eine eigentlich sinnfreie Eingabe zu verlangen, damit erst danach das Programm zuende ist und die Konsole so lange offen bleibt. Wenn man das Programm aber in einer vorhandenen Konsole startet, dann nervt diese Abfrage eher.
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@Pacome: wie rufst Du denn Deine Funktion steuern auf (und was steuert die eigentlich)? Kann es sein, dass Du ein print vergessen hast?
Pacome
User
Beiträge: 18
Registriert: Montag 24. August 2015, 11:52

@sparrow

Danke nochmal für die Aufklärung, ich habs schon geahnt. Aber mein Problem ganz lösen konnte ich damit nicht.
Ich bin ja gewillt mit der Konsole zu arbeiten aber wenn ich ja nichtmal diesen Quellcode aufrufen kann, fühl ich etwas Machtlos.....

Ich soll morgen auch noch einen Debian Server Konfigurieren....... -.- mir graut es ein wenig ^^ aber ich werds schon packen! Ist ja nur Zeit die ich dann halt zum nachlesen brauche :)
aber danke schonmal für die viele Hilfe!

@BlackJack

Ich steuer ein PI über SSH protokoll an und kann darüber keine Grafische Oberfläche sehen. Mal abgesehen davon will ich mit der Konsole umgehen können. Oder verstehe ich das falsch, und ich kann auch eine Grafischen Editor in der Konsole bedienen?
@Sirius3 das habe ich mir schon gedacht das eine Fragestellung irgendwie fehlen muss :) danke für diesen Tip mit Print!
Benutzeravatar
sparrow
User
Beiträge: 4144
Registriert: Freitag 17. April 2009, 10:28

@Pacome
Dann hoffe ich, dass der Debian-Server nicht vom Internet erreichbar ist - oder noch jemand in die Administration des Servers eingebunden ist, der wirklich weiß was er tut.
Das hat zwar wenig mit Python zu tun, aber ein schlecht oder falsch administrierter Linux-Server ist entsprechend anfällig.
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: 17703
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: 17703
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: 3552
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: 17703
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".
Antworten