.py startet nicht

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.
Antworten
PythoBaby
User
Beiträge: 5
Registriert: Freitag 13. Januar 2023, 16:02

Hallo liebe Community,

ich bin nicht nur grad hier "auf die Welt gekommen" sondern auch was das Pytho Programmieren angeht.

Deshalb habe ich mal mit dem Tutorial hier angefangen.

https://www.youtube.com/watch?v=362fjQdpFlc

Mein erstes Programm habe ich nach Vorgabe nun in PyCharm erstellt.
Nun hänge ich aber bei einem Problem fest und weiss nicht mehr weiter. Wahrscheinlich mehr als simpel,
aber ich weiss nicht wo ich das evtl vergessene Häkchen setzen muss.

Wie ab 30:43 im Video beschrieben ist, versuche ich nun das erste Programm (mit Endung *.py) ausserhalb von PyCharm zu starten.
Aber statt es startet, öffnet sich nur PyCharm wieder. Scheinbar soll es ausserhalb der Umgebung durch Doppelclick gestartet werden können.

Was mach ich falsch ?

Danke für Eure Mühe mit einem absoluten Newbie

VLG
Markus
Benutzeravatar
Dennis89
User
Beiträge: 1556
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

wenn du dir im Explorer die Eigenschaften der Datei anzeigen lässt, was steht dann bei "Öffnen mit"?
Da muss der Python-Interpreter stehen.

Ich habe mir jetzt wirklich nur die von dir beschriebene Stelle des Videos angeschaut, aber wenn du Python lernen willst, dann würde ich eher zu diesem Tutorial raten:
https://docs.python.org/3/tutorial/
Strings wie sie im Video mit '+' zusammengestückelt werden, macht man zum Beispiel gar nicht. Wenn du dir sowas angewöhnst, musst du dich später wieder umstellen.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythoBaby: Python-Programme per doppelklick starten macht nur Sinn wenn das GUI-Anwendungen sind. Für Konsolenanwendungen sollte man erst eine Konsole öffnen und dort dann das Programm starten, denn sonst hat man das Problem mindestens bei Fehlern, die Fehlermeldung gar nicht zu sehen, weil sich sofort das Fenster schliesst, und auch am Programmende der Text in der Konsole nicht mehr beliebig lange betrachtet oder auch markiert und kopiert werden kann, weil auch beim normalen Programmende sich das Fenster schliesst.

Insofern ist das gar nicht das schlechteste wenn ein Doppelklick auf eine *.py-Datei eine IDE oder einen Editor öffnet.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
PythoBaby
User
Beiträge: 5
Registriert: Freitag 13. Januar 2023, 16:02

@Dennis89:
Danke Dir! Es war tatsächlich die PYCharm Verknüfung gesetzt. Die habe ich in der Reg gelöscht und dann funktioniert es auch wie gewünscht.
Bzgl Tutorial, ja mag sein. Aber iwo muss ich ja mal anfangen. Nehme ich jetzt Deinen Link dann kommt der Nächste und sagt eine anderer Link wäre besser.
Aber danke Dir für dn Hinweis , ich behalte das mal im Hinterkopf.
By the way , gibt es eigenlich iwo eine umfangreiche und klarstrukturierte Übersicht der Programmierwerkzeuge (Kommandos) von Python. Ich hab bisher im inet nichts Passendes gefunden.

@....blackjack...:
Mir geht es erstmal nur darum, dass ich dem Kollegen folgen kann . Dass sich nach Ausführung der ganze Käs sofort wieder schliesst habe ich auch gesehen und wird im Videos auch thematisiert.
Mit eine zusätzlichen INPUT Anweisung ist das dann allerdings wieder akzeptabel.
Benutzeravatar
Dennis89
User
Beiträge: 1556
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,
PythoBaby hat geschrieben: Samstag 14. Januar 2023, 14:06 By the way , gibt es eigenlich iwo eine umfangreiche und klarstrukturierte Übersicht der Programmierwerkzeuge (Kommandos) von Python. Ich hab bisher im inet nichts Passendes gefunden.
https://docs.python.org/3/library/index.html

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythoBaby: Der Aufruf der `input()`-Funktion ist nicht akzeptabel. Es nervt immer noch mal sinnlos die Eingabetaste zu drücken bei Kommandozeilenprogrammen. Und wenn das Programm vorher in einen Fehler läuft, schliesst sich das Fenster, ohne das man eine Chance hat die Fehlermeldung zu lesen. Kommandozeilenprogramme sind einfach nicht dazu gedacht per Doppelklick gestartet zu werden.

Selbst wenn man GUI-Anwedungen *entwickelt*, macht es Sinn die nicht per Doppelklick zu starten, weil Warnungen und auch Fehlermeldungen auf der Konsole ausgegeben werden, die man als Programmierer in der Regel gerne sehen möchte.

Kommandos und Anweisungen klingen nach anderen Programmiersprachen. Als Kommandos könnte man wahrscheinlich die Schlüsselworte bezeichnen. Da gibt's eine Dokumentation auf Python.org. Spezielle Anweisungen gibt es ansonsten nicht wirklich. Es gibt eine ganze Menge Funktionen und Klassen in der Standardbibliothek die in der Python-Dokumentation beschrieben werden. Und dann noch mehr Funktionen und Klassen in externen Bibliotheken die in der Regel auch eine eigene Dokumentation haben.

Bei dem Tutorial wird nicht der nächste kommen und ein anderes Empfehlen. Jedenfalls nicht als ”besser”. Das Tutorial in der Python-Dokumentation sollte man auf jeden Fall mal durchgearbeitet haben, egal was man sonst noch so verwendet. Das ist von den Python-Entwicklern selbst, die kennen die Sprache wirklich gut :-) und es gibt einen ganz guten Rundgang durch die Grundlagen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

PythoBaby hat geschrieben: Samstag 14. Januar 2023, 14:06Mit eine zusätzlichen INPUT Anweisung ist das dann allerdings wieder akzeptabel.
Du hast also zu dem eigentliche Problem, Konsolenprogramme nicht in einer Konsole auszuführen, noch ein zweites Problem hinzugefügt, eine unsinnige Zeile, die im Normalfall nervt und im Fehlerfall nicht funktioniert.
Die einfache Lösung, Konsolenprogramme in einer Konsole auszuführen ignorierst Du aber.
PythoBaby
User
Beiträge: 5
Registriert: Freitag 13. Januar 2023, 16:02

@Dennis89:
Danke! Aber iwie auch nicht das was ich mir vorstelle. Mit schwebt so was vor wie eine Kommando Syntax Kurzübersicht
also z.B. den einfachsten Fall PRINT("<TEXT>") - gibt einen beliebigen <TEXT> aus. So in der Art.
Dann muss ich wohl noch etwas suchen.

@___blackjack___:
Natürlich magst Du recht haben. Aber so weit bin ich aber noch gar nicht. Mehr wie das eine genannte Pgm hab ich in Python noch gar nicht geschrieben. Mir ist schon klar dass das nicht perfekt ist und eher ne Holzhammer den eine stylisch korrekte Programmierung ist.
Das Problem umschiffe ich aber glaub mit der Eingabe in pyCharm, weil dort ja genau eine Fehlerprüfung stattfindet.
Aber JA, wenn eine Terminalnutzung sinnvoller ist dann mach ich das sicher in naher Zukunft eh.
Bzgl des Tutorials, mach ich jetzt erst mal weiter mit den Videos und danach buddel ich mich durch die Python.org Doku.
Als erste Anlaufstelle verstehe ich dort oft noch Bahnhof.
Aber dennoch danke für Deine wertvollen Hinweise.

@Sirius3 :
s. o.g. Text zu ___blackjack___
Ich ignoriere nix. Ich behalt alles im Hinterkopf ich will nur erst einmal Laufen lernen bevor ich nachher ans Optimieren gehe.
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythoBaby: Es gibt kein PRINT-Kommando (gab es in Python 2 mal). Es gibt eine `print()`-Funktion; das ist eine Funktion wie jede andere auch und wenn es die nicht gäbe, könnte man sich die selber schreiben. Und die ganzen eingebauten Funktionen (und Klassen/Datentypen) und, die die es in der Standardbibliothek gibt, werden in der Python-Dokumentation erklärt. Schau in dem Index den Dennis89 verlinkt hat nach der `print()`-Funktion, dann kommst Du zu der Dokumentation was diese Funktion macht, und auch in welchem Modul die definiert ist, und welche Funktionen und Klassen/Datentypen in dem Modul noch definiert sind. In dem Modul befindet sich alles was man ohne einen expliziten ``import`` verwenden kann. Damit wird man in der Regel bei nicht-trivialen Programmen nicht auskommen, also lohnt sich auch ein Blick in das Inhaltsverzeichnis der Standardbibliothek und bei allem mal anlesen wofür das jeweils gut ist, damit man weiss wo man nachsehen muss, wenn man etwas zu dem entsprechenden Thema braucht. Ein paar Module sind ”universell”, die enthalten Funktionen und Datentypen die allgemein nützlich sind. `collections`, `itertools`, `contextlib`, `math`, `random`, `queue`, `operator`, wären Beispiele für Module aus der Standardbibliothek, mit Sachen die man sich eher nicht noch mal selber schreiben möchte.

PyCharm macht eine statische Analyse, soweit das bei einer so dynamischen Programmiersprache möglich ist. Das findet bei weitem nicht alle Fehler, und markiert auch Sachen als Fehler die gar keine sind. Selbst IDEs/Compiler für statische Programmiersprachen finden nicht alle Fehler die zur Laufzeit auftreten können. Beim Entwickeln, und noch mal wahrscheinlicher als Anfänger, wird man also immer wieder über Laufzeitfehler stolpern. Es geht da nicht darum zu Optimieren, sondern dass das Licht an ist wenn man irgendwo rein läuft, und dann *sieht* wo man gegen gelaufen ist, statt das man nur merkt *dass* etwas falsch gelaufen ist, man aber gar nicht sieht *was* das war.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
PythoBaby
User
Beiträge: 5
Registriert: Freitag 13. Januar 2023, 16:02

@ __blackjack__ :
Jetzt bin ich total verwirrt.
Ich such nach print() und finde x- Einträge aber keine, die ich iwie auch nur ansatzweise verstehe.
Vielleicht bin ich zu doof für diese Sprache. Das kann gut sein.
Zumal es diese ganze Dokumentation nicht auf deutsch gibt. Nicht, dass ich englisch nicht verstehen würde , aber
gleichzeitig Python lernen ist schon nicht ganz einfach.
Zumal mir jetzt wieder jemand erzählt hat, dass man Python erst anfangen sollte, wenn man html
gelernt hat.

Trotzdem mal danke für Deine ausführlichen Antworten und, ja, PyCharm findet natürlich nicht alle Fehler.
Dachte nur, es ist einfacher damit anzufangen.
Und stimmt , das glaube ich auch dass man am Anfang über diese "unerklärlichen" Laufzeitfehler stolpert,
sowas kenne ich noch vom SYNTAX(T)ERROR :shock: aus den Anfangszeiten des BASIC.
Benutzeravatar
grubenfox
User
Beiträge: 612
Registriert: Freitag 2. Dezember 2022, 15:49

PythoBaby hat geschrieben: Sonntag 15. Januar 2023, 11:42 Zumal mir jetzt wieder jemand erzählt hat, dass man Python erst anfangen sollte, wenn man html
gelernt hat.
Also das ist nun Quatsch.... gut, man kann auch mit Python Webanwendungen usw. bauen (dann sollte man auch HTML können), aber es gibt viele Pythonprogramme für die Kommandozeile oder mit grafischen Oberflächen für den Desktop (mit wxPython, QT, Tk gebaut).
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@PythoBaby: mit welchen Tutorial lernst Du denn Python, in dem nichteinmal print erklärt wird? Dann würde ich einfach ein anderes suchen.
PythoBaby
User
Beiträge: 5
Registriert: Freitag 13. Januar 2023, 16:02

@grubenfox:
S. meinen ersten Beitrag, da habe ich das Video angegeben in dem es am Anfang heisst "Wir fangen bei Null an."
Bei 0:59:15 heisst es dann auf einmal "Man sollte immer html programmiert haben bevor man mit Python anfängt.
Wenn das quatsch ist, wieso wird das als drittes Beispiel angeführt? Passt dann auch iwie nicht.

@Sirius3:
s.o. meinen ersten Post - Hörte sich vernünftig an - als Einstieg.

Mittlerweile glaube ich auch dass er nicht das wahre ist, weil er selber bei print ein paar Tutorials später statt dem von Euch
bemämgelten "+" nun das "," verwendet um Text und Variablen auszugeben.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hallo, ich schreibe meine Programme als Anfänger in einem Texteditor : notepad++

Dann starte ich es mit einem Plugin : python.exe d:\python39\programme-py\anschreiben.py

Ich habe im notepad++ ein Plugin dafür erstellt.
Kann alle py damit im Ordner aufrufen und starten.
Kann auch Programme mit pythonw.exe starten.
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wenn ich „print“ in das Sucheingabfeld in der verlinkten Python-Dokumentation eingebe ist der dritte Treffer in der Liste, „print (Python function, in Built-in Functions)“, die eingebaute `print()`-Funktion. Davor ist die `pprint()`-Funktion aus dem gleichnamigen Modul, und ein Eintrag der zur Beschreibung vom `print`-Fixer aus dem 2to3-Programm führt, das (halb)automatisch dabei helfen kann Python 2 Quelltext nach Python 3 zu portieren. In Python 2 war ``print`` noch eine Anweisung ähnlich wie in BASIC.

Also ganz konkret wird die `print()`-Funktion also hier beschrieben: https://docs.python.org/3.8/library/fun ... rint#print

Und das ist die Seite auf der alle eingebauten Funktionen beschrieben werden. Hat ganz am Anfang sogar eine Tabelle mit all den Namen in alphabetischer Reihenfolge.

Wenn man nicht über die Suche, sondern über das von Dennis89 verlinkte Inhaltsverzeichnis geht, dann kommen die Kapitel mit den eingebauten Namen (Funktionen, Konstanten, Typen) gleich am Anfang. Da ist nur ein Einführungskapitel davor.

Ob man jetzt HTML vor Python lernen/können muss, ist ein bisschen fragwürdig, denn man braucht HTML ja nicht zwingend. Das würde ich bei PHP verstehen, weil die Sprache eigentlich fast zwangsläufig mit HTML zusammen verwendet wird, aber es gibt eine ganze Menge was man mit Python machen kann, was mit HTML überhaupt nichts zu tun hat.

Syntaxfehler wird die IDE alle finden. Das ist einfach, da braucht man nicht einmal zusätzliche Software für, denn das kann man mit Python-Bordmitteln prüfen, in dem man einfach versucht den Quelltext zu kompilieren. Das wird jede IDE machen. Bei den meisten klassischen, unstrukturierten BASIC-Dialekten werden dagegen auch Syntaxfehler erst gemeldet, wenn das Programm zur Laufzeit an die syntaktisch falsche Stelle kommt. Es gibt nur recht wenige Ausnahmen wo das RUN erst eine komplette syntaktische Prüfung durchführt, bevor das Programm dann tatsächlich anfängt zu laufen. Oder gar ein separates Kommando bereitstellt mit dem man nur prüfen kann, ohne das Programm zu starten. Da fiele mir spontan nur SCAN von der Programmiersprache COMAL ein, die aber kein reines BASIC ist, sondern ein BASIC, das quasi mit Pascal gekreuzt wurde.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
grubenfox
User
Beiträge: 612
Registriert: Freitag 2. Dezember 2022, 15:49

PythoBaby hat geschrieben: Sonntag 15. Januar 2023, 12:41 @grubenfox:
S. meinen ersten Beitrag, da habe ich das Video angegeben in dem es am Anfang heisst "Wir fangen bei Null an."
Bei 0:59:15 heisst es dann auf einmal "Man sollte immer html programmiert haben bevor man mit Python anfängt.
Wenn das quatsch ist, wieso wird das als drittes Beispiel angeführt? Passt dann auch iwie nicht.
Da geht es ja dann auch um das erstellen von Webseiten. Da braucht's auch html.
Ich hatte das 'dass man Python erst anfangen sollte, wenn man html gelernt hat.' absoluter verstanden als es gemeint war. Wenn es um Web-geschichten geht ist es klar. Aber mit Python geht ja eben noch viel mehr (siehe auch die vorherigen Beispiele aus dem Video... viel Python ganz ohne html )
Benutzeravatar
grubenfox
User
Beiträge: 612
Registriert: Freitag 2. Dezember 2022, 15:49

PythoBaby hat geschrieben: Samstag 14. Januar 2023, 18:41 Danke! Aber iwie auch nicht das was ich mir vorstelle. Mit schwebt so was vor wie eine Kommando Syntax Kurzübersicht
also z.B. den einfachsten Fall PRINT("<TEXT>") - gibt einen beliebigen <TEXT> aus. So in der Art.
Dann muss ich wohl noch etwas suchen.
Vielleicht https://quickref.me/python? Bei der Beschreibung "The Python cheat sheet is a one-page reference sheet for the Python 3 programming language." finde ich das 'one-page' lustig.... eine Seite stimmt zwar, aber eine Html-Seite die per Definition unendlich lang sein kann. Wenn man das z.B. auf A4 ausdruckt, dann sind es doch einige Seiten mehr. Mein virtueller PDF-Drucker will selbst bei A2 (mehr oder weniger ohne Rand) sechs Seiten daraus machen.
Antworten