@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.
Steuerrechner
@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.
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.
@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!
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!
@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.
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: 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.
@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.
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
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
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
ALso wie verlange ich vom Benutzer eine Eingabe?
age = input("Alter des Hundes: ")
print <--------------- hat mir wie gesagt wenig geholfen
@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.
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.
@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
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
@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.
- 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.
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@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
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 -.-
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
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 -.-
@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.
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...
@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 >.<
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 >.<
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
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ß >.<
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.Pacome hat geschrieben:Code: Alles auswählen
def steuern(einkommen): einkommen = raw_input("Einkommen? ") print einkommen
Einrückungen sind in Python nicht nur optische Gliederung sondern sie sind elementar für den Programmfluss.
@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".