Speichern und wieder Ausführen

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
MS23
User
Beiträge: 4
Registriert: Samstag 17. Mai 2014, 07:51

Hallo liebe Python Experten,
ich bin Totalanfänger und das auch nur, weil mein Sohn (13) sich entschlossen hat, in einem Schulprojekt das Thema Computer und Computersprachen näher zu beleuchten. Wir haben uns exemplarisch Python als Sprache ausgesucht, da es hier ein schön und relativ einfaches Buch "Python kinderleicht" von J.R. Briggs gibt. Nun stoße ich aber an meine Grenzen bei dem Versuch eine Minianwendung zu speichern und über "run module" wieder auszuführen. Ich habe in tkinter ein Leinwand erzeugt und ein Viereck gezeichnet. Das ganze sieht wie folgt aus:
>>> from tkinter import *
>>> import random
>>> tk = Tk()
>>> canvas = Canvas(tk, width=400, height=400)
>>> canvas.pack()
>>> def random_rectangle(width, height):
x1 = random.randrange(width)
y1 = random.randrange(height)
x2 = x1 + random.randrange(width)
y2 = y2 + random.randrange(height)
canvas.create_rectangle(x1, y2, x2, y2)


>>> random_rectangle(400, 400)

Wenn ich das dann als .py Datei speichere, es schließe, wieder öffne und dann auf "run module" gehe erhalte ich "invalid syntax". Die Leinwand wird auch nicht mehr geöffnet. Zu sagen wäre evtl. noch, dass ich die Python Version 3.4.0 verwende. Ich bin eigentlich genau nach Anweisung in dem Buch vorgegangen (S. 172/173 englische Version). Das ist wahrscheinlich für die meisten ein völlig banales Thema, aber ich komme über diese Klippe nicht. Wie kann ich generell Codes speichern und sie später wieder ausführen? Da ich am Ende ein kleines Spiel mit ihm programmieren will ("bounce" aus dem Buch) brauche ich das Speichern. Es wäre toll, wenn jemand einem entnervten Vater helfen könnte, der keine wirkliche Ahnung vom Programmieren hat, aber seinem Sohn helfen will, sich dem Thema zu nähern. Freue mich über ein paar leicht verständliche Hinweise (:-)). Viele Grüße MS23
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Das ">>> " zeigt, dass die Befehle im interaktiven Interpreter ausgeführt werden. Der ist eigentlich "nur" dazu gedacht, dass man schnell mal Code ausprobieren kann und sich ggf. mit anderen Modulen vertraut macht. Wenn du ein Programm schreibst, dann musst du den Code einfach mit einem Editor in einer Datei abspeichern. Ausführen kannst du den Code dann mittels "python programmname.py", das rufst du einfach in der Konsole/Kommandozeile auf.
Das Leben ist wie ein Tennisball.
MS23
User
Beiträge: 4
Registriert: Samstag 17. Mai 2014, 07:51

Hallo EyDu,
vielen Dank für die schnelle Antwort! Das habe ich so grundsätzlich verstanden und hilft mir beim generellen Verstehen. Kannst Du mir vielleicht noch auf die Sprünge helfen, wie ich mit einem Editor speichere? Muss ich gleich von Beginn an Python anders öffnen? Ich öffne immer die idle Ink und gehe dann über File..save. Danke nochmals und eine sonniges Wochenende. MS23
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Du nimmst einen beliebigen Texteditor Deiner Wahl (nicht notepad.exe), schreibst Dein Programm, speicherst es unter einem beliebigen Dateinamen mit der Endung .py.

Ich nutze unter Windows meist notepad++.

Um IDLE sollte man einen Bogen machen, gerade wenn man Tkinter-Programme schreibt.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
zappa
User
Beiträge: 26
Registriert: Samstag 19. März 2011, 22:31

MS23 hat geschrieben: y2 = y2 + random.randrange(height)
>>> random_rectangle(400, 400)
Das 2. y2 existiert an dieser Stelle noch gar nicht. Entsprechend du wirst den Fehler

Code: Alles auswählen

local variable 'y2' referenced before assignment
bekommen - das ist sicher nur ein Tipfehler. Du meintest hier sicher

Code: Alles auswählen

y2 = y1 + random.randrange(height)
.
Am Ende des Programms muss noch

Code: Alles auswählen

tk.mainloop()
eingefügt werden, damit das tkinter startet.
BlackJack

@MS23: In IDLE müsstest Du über den Dateidialog ein neues Fenster öffnen und dort den Programmtext eingeben und dann abspeichern. Darüber das bei IDLE die Shell geöffnet wird und das speichern des Fensterinhalts erlaubt, zumindest ohne einen deutlichen Warnhinweis, ist äusserst anfängerunfreundlich. In diese ”Falle” tappen nämlich viele Anfänger.
MS23
User
Beiträge: 4
Registriert: Samstag 17. Mai 2014, 07:51

Hi,
habe ich auch schon so gemacht, nur ich kann hier gar nicht programmieren da der prompt (>>>) nicht erscheint. Gebe ich den promp in jeder Zeile händisch ein, geschieht auch nichts. Keine Leinwand öffnet sich aus tkinter und es wird auch nichts gezeichnet. Gruß MS23
BlackJack

@MS23: Doch *da* kannst Du programmieren, also nicht nur etwas eingeben was sofort ausgewertet wird, sondern tatsächlich Programme schreiben. Die musst Du dann ausführen. In IDLE über das Menü oder die entsprechende Taste (F5).
MS23
User
Beiträge: 4
Registriert: Samstag 17. Mai 2014, 07:51

Es hat funktioniert! Super & vielen Dank für den Hinweis. Du hast mir sehr geholfen. :D Ein schönes Wochenende und vielleicht bis bald mal wieder. Viele Grüße MS23
Antworten