Wir fangen ganz langsam an

zur Kursübersicht

 


nächste Seite

Stolperfallen

kleine Überraschungen

erstes Lernprojekt


Bevor es richtig losgeht ...

noch die Info, wie man anfängt und wieder aufhört mit Python. Voraussetzung dafür ist natürlich, dass Python auch wirklich installiert ist. Worauf man auf einem Linuxsystem achten sollte, lest bitte hier. Bei Windows steht Python als *.exe - Datei zur Verfügung, die nach Start alles auspackt. Dabei empfielt sich, die Frage danach, ob Tk auch installiert werden soll, zu bejahen. Python basiert auf einem Interpreter. Die daraus resultierenden Besonderheiten, die sich gegenüber einem Compiler während des Programmierens größtenteils als Vorteil erweisen, will ich hier nicht breit ausführen. Kurz gesagt geht das Entwickeln des Programms viel zügiger, dagegen läuft ein übersetztes Programm eines Compilers beim Anwender schneller.

Zu Anfang starten wir den Interpreter, indem wir den Befehl Python aufrufen. Dann erscheint nach einem Meldetext der typische Prompt für Python:

>>> _

der auf eine Eingabe von uns wartet. Das für einen ersten Versuch übliche

                         Hallo Welt

sieht dann so aus:

>>> print "Hallo Welt" (Enter)
Hallo Welt
>>> _

Eingegeben und nach Enter gleich ausgeführt, zack! schon steht es auf dem Bildschirm.

Wollen wir den Interpreter wieder beenden, drücken wir unter Linux ^D und unter Win ^Z (was bei beiden Betriebssystemen jeweils EOF bedeutet, d.h. die Eingabe von der Standardkonsole wird als beendet gemeldet. Schon sind wir wieder draussen.


Die ersten kleinen Stolperfallen

Die nachfolgenden Zeilen sollen nun nicht schrittweise vom Urschleim in Python einführen, sondern setzen voraus, dass der Leser sich das Tutorium zumindest mal angesehen hat, denn besser, als dort dargestellt, kann ich die Eigenschaften des Python-Systems auch nicht beschreiben. Hier sollen nur die kleinen Probleme, auf die ich zuerst trotzdem reingefallen bin, erwähnt werden. Wer zuvor noch nichts weiter über Python gelesen hat, kann diese Textpassage auch überspringen und gleich weiter unten auf dieser Seite das kleine Lehrbeispiel nachvollziehen.

Der Erste Knüller passierte mir, als ich ein Konstrukt eingegeben habe, das etwa so aussah:

for x in [1, 5]:
    print x
    print " -- "

was sofort klappte und die Ausgabe

1
 --
5
 --

brachte. Danach habe ich an den beiden print - Befehlen irgendwas rumgeändert. Sie waren danach aber syntaktisch noch richtig. Trotzdem lief das Programm nicht mehr und brachte undurchsichtige Fehlermeldungen. Nach langem Probieren fand ich heraus, dass die Einrückung der ersten print - Zeile mit Tabulator erfolgte, und die zweite Zeile aber über mehrere Leerzeichen geschah. Auf dem Bildschirm standen beide Zeilenanfänge fein übereinander. In Wirklichkeit waren sie es nicht. Also Falle! Am besten man rückt immer auf die gleiche Art ein, schon kann so etwas nicht vorkommen.

Es ist auch anfangs etwas ungewohnt, dass Befehlsblöcke, die in C mit { .. } und bei pascal mit begin und end eingeklammert sind, hier nur durch eine einheitliche Einrückung als Block behandelt werden. Schön einfach, wenn man genügend aufpasst.

Eine andere Anfängerfalle ist es, dass man oft hinter den Kopfzeilen von Schleifen, Funktionen usw. den Doppelpunkt vergisst. Er steht eben einfach nicht da und schon meckert der Interpreter. Der ist ja auch im Recht, aber man muss sich halt erst an die Doppelpunkte gewöhnen. Irgendwann geht aber auch das automatisch, und man muss nicht mehr darauf achten. Übt man fleißig, dann tritt dieser Zustand besonders früh ein :-)

Übrigens gibt es nicht nur was zum stolpern, manchmal geht auch überraschenderweise etwas, wo man es nicht einfach geglaubt hat. So ist mir noch gut bekannt, dass das Umleiten von Programmausgaben in der Art:

sendendes_programm.exe > logdatei.txt

z.B. bei Turbopascal nicht so einfach ging, weil sich die Borländer eine besonders leistungsstarke Unit haben einfallen lassen, die Crt genannt wurde. Mit dieser ging das eben nicht. Aber mit Python geht es ganz einfach.

Beispielprogramm:

for x in range(1, 4):
    print "Zeile ", x

(Achtung! Beachtet den Unterschied zum Beispiel oben mit x in [1, 5], das nur die
Werte 1 und 5 berücksichtigt!) Hier geht der Laufbereich von 1 bis kurz vor die 4 (hier 3)!

Wenn wir dieses in einer Datei namens test.py abgespeichert haben und aufrufen:

python test.py > probe.txt

und uns mit unserem Lieblingseditor die Datei probe.txt ansehen, sieht die so aus:

Zeile  1
Zeile  2
Zeile  3

Also der Inhalt der Umleitung (also das, was sonst auf dem Bildschirm erschienen wäre,
ist in unserer Datei erstmal angekommen. Zwei Merkwürdigkeiten sollten wir noch
bemerken:

  • Zwischen dem Wort Zeile und der jeweiligen Zeilennummer stehen zwei Leerzeichen. Eines wurde durch den Printbefehl automatisch dazugetan. Das andere stammt aus unserer Programmierung (dem Leerzeichen zwischen Zeile und ")
  • Die Schleife zählte nur bis 3, obwohl die Bereichsangabe von 1 bis 4 vorgegeben war. Das liegt daran, dass range offene Intervalle definiert, d.h. der hintere Wert ist nicht mehr Bestandteil des Intervalls. Kein Problem, aber man sollte es wissen!

Weitere Überraschungen:

Eine Liste gibt auf Abfrage eine wahr/falsch - Aussage zurück, ob sie einen Inhalt hat. Um zu zeigen, was damit gemeint ist, erstellen wir uns mal eine Liste.

liste = []

Nun ist die Liste deklariert, aber sie ist noch leer. Wenn ich sie logisch abfrage, dann meldet sie false:

if liste:
    print "true"
else:
    print "false"

Das bringt die Antwort:

>>> false

Nun wollen wir mal was reintun:

liste.append('Hurra')
print liste

>>>['Hurra']

Diesmal bringt die Abfrage:

if liste:
    print "true"
else:
    print "false"

eine andere Antwort:

>>> true

Das waren einige Überraschungen in der Welt des Python - Fensters. Wer darüber hinaus schon jetzt lesen will, wie die Überraschungen bei Tkinter weitergehen, der sollte hier klicken.


Ein kleines Lernprojekt zum experimentieren

Die bisher so nebenbei erzählten Dinge sollten den Leser lediglich neugierig machen.

Lehrreicher ist es bestimmt, wenn wir eine kleine selbstgestellte Aufgabe schrittweise realisieren, und dabei die verschiedensten Python - Elemente kennenlernen.

Was benutzen wir alles für unseren kleinen Kurs

- erstmal noch keine Grafik
- den vorhandenen Python - Interpreter
- das eingebaute Module "sys"
- die beiliegende Module "os" und "pikle"

Als erste Aufgabe wollen wir uns vornehmen, eine kleine "todo - Liste" zu verwalten