Mehr Befehlsfolgen und andere Dinge

Was werden wir behandeln?
Wir führen ein neues Werkzeug zur Eingabe von Python-Programmen ein. Wir betrachten den Gebrauch von Variablen zum Speichern von Informationen für den zukünftigen Gebrauch; auch wie man eine Abfolge von Befehlen kombiniert, um eine Aufgabe zu erledigen.

OK, wir wissen bis jetzt, wie man einzelne einfache Eingabekommandos in Python eingibt und haben begonnen, Daten zu betrachten und was man mit ihnen machen kann. Schauen wir einmal, was geschieht, wenn wir mehrere Befehle in Python eingeben.

Die Freude, eitel (IDLE) zu sein

 

Doch zuvor, wenn wir Python ab Version 1.5.2 (das wird beim Start angezeigt) installiert haben, kannst du ein Werkzeug, genannt IDLE, mitinstalliert finden. Das ist grundsätzlich eine Kommandozeile in einem Fenster. Es hat verschiedene Vorteile gegenüber dem Gebrauch der DOS-Version:

Bei der Benutzung von MS Windows gibt es noch eine andere Möglichkeit in der Form von PythonWin, das du als ein Teil des winall-Paketes herunterladen kannst. Dieses ermöglicht den Zugriff auf alle niederen Programmierfunktionen des Windows MFC, und ist eine wichtige und sehr gute Alternative zu IDLE. Es arbeitet nur in Windows, aber meiner Meinung nach ist es IDLE leicht überlegen. Auf der anderen Seite ist IDLE sehr neu und kann in nachfolgenden Versionen PythonWin überholen. Was immer auch geschieht, es ist schön die Wahl zu haben!

(Anm. des Übersetzers: das Wortspiel der Überschrift ist im Deutschen schwierig wiederzugeben: 'idle' heißt eitel oder nutzlos, IDE ist die Abkürzung für 'Integrated Developement Environment' - integrierte Entwicklungsumgebung, IDLE nennt sich diese IDE von Python und ist nach dem 'Monty-Python`- Mitglied Eric Idle benannt)

 

 

Ein kurzer Kommentar

Eins der wichtigsten Programmierwerkzeuge ist eins, das Anfänger oftmals bei der ersten Bekanntschaft als nutzlos empfinden - Kommentare. Kommentare sind lediglich Zeilen in einem Programm, die beschreiben, was getan wird. Sie haben keinen Effekt darauf, wie das Programm arbeitet, sie sind pure Dekoration. Sie haben eine wichtige Rolle zu spielen - sie erzählen dem Programmierer, was passiert, und - viel wichtiger - warum. Dies ist besonders von Bedeutung, wenn der Programmierer den Code liest, den er nicht selbst geschrieben, oder wenn es schon sehr lange her ist, dass er/sie in geschrieben hat. Wenn du schon etwas länger programmierst, wirst du wirklich gute Kommentare zu schätzen wissen. Von jetzt an werde ich die Codefragmente, die ich schreibe, kommentieren. Allmählich wird die Menge des erläuternden Textes abnehmen, so wie an ihrer Stelle die Kommentare erscheinen.

Jede Sprache hat ihre Art Kommentare zu kennzeichnen. In BASIC ist es REM am Anfang eines Kommentars. Alles hinter dem REM wird ignoriert:

REM print "Dies wird niemals gedruckt"
print "Dies wird gedruckt"

Du wirst dich an REM erinnern, wenn du jemals eine MSDOS-Batchdateien geschrieben hast, da sie die gleiche Kommentar-Marke verwenden.

Die meisten BASICs erlauben auch den Gebrauch von ' anstelle von REM, das leichter einzutippen ist, aber schwieriger zu erkennen. Du hast die Wahl.

Python und Tcl benutzen beide ein # - Symbol als ihr Kommentarzeichen. Alles, was auf # folgt, wird ignoriert:

v = 12     # gibt v den Wert 12
x = v*v    # x ist v zum Quadrat

Augenscheinlich ist dies ein sehr schlechter Kommentar-Stil. Dein Kommentar sollte nicht nur das festhalten, was der Code tut - wir können das ja selbst sehen! Er sollte erklären, warum er das tut:

v = 3600    # 3600 ist die Anzahl der Sek. in einer Stunde
s = t*3600  # t beinhaltet die abgelaufene Zeit in Stunden, hier umgewandelt in Sek.

Dies sind viel hilfreichere Kommentare.

Befehlsfolgen benutzen Variablen

Jetzt versuche entweder in IDLE oder mit dem DOS- oder Unix-Befehlseingabefenster von Python dies zu tippen:

>>> v = 7
>>> w = 18
>>> x = v + w    # Verwendung unserer Variablen in einer Berechnung
>>> print x

Was hier geschieht, ist, dass wir Variablen erzeugen ( v, w, x ) und diese manipulieren. Es ist, als würden wir die M -Taste unseres Taschenrechners drücken, um ein Ergebnis für später abzuspeichern.

Wir können das eleganter machen, indem wir ein Formatstring zum Ausdrucken des Ergebnisses verwenden:

>>> print "Die Summe von %d und %d ist: %d" % (v,w,x)

Ein Vorteil von Formatstrings ist, dass wir diese auch in Variablen speichern können:

>>> s = "Die Summe von %d und %d ist: %d"
>>> print s % (v,w,x)   # nützlich beim Ausdrucken der gleichen Ausgabe mit unterschiedlichen Werten

Ordnungsangelegenheiten

Bis jetzt wirst du wohl gedacht haben, dass diese Konstruktionen von Befehlsfolgen etwas überbewertet und einsichtig sind. Du hast in soweit Recht, dass diese einsichtig sind, aber sie sind nicht so einfach, wie sie ausschauen mögen. Dort kann es versteckte Fallen geben. Nehmen wir den Fall, dass du alle Überschriften in einem HTML-Dokument auf bestimmte Ebenen 'befördern' möchtest:

Dazu werden in HTML die Überschriften-Texte durch Folgendes eingeschlossen:
<H1>text</H1> für Überschriften Ebene 1,
<H2>text</H2> für Überschriften Ebene 2,
<H3>text</H3> für Überschriften Ebene 3 und so weiter.

Das Problem ist, dass sobald du bei Überschriftenebene 5 angelangt bist, der Überschriftentext meist kleiner als der Textrumpf ist, was sehr sonderbar aussieht. Daher mußt du entscheiden, alle Überschriften auf eine Ebene zu befördern. Es ist ziemlich einfach, dies mit einer simplen String-Substitution in einem Text-Editor zu tun, ersetze '<H2' mit '<H1' und '</H2' mit '</H1' und so fort.

Bedenke nun was passiert, wenn du mit der größten Zahlen beginnst - d.h. H4 -> H3, dann H3 -> H2 und endlich H2 -> H1. Alle Überschriften gehen über zu H1! Somit ist die Reihenfolge für die Befehlsfolge für Aktionen wichtig. Das Gleiche gilt genauso, wenn wir ein Programm für die Substitution schreiben (was wir sicherlich einmal tun werden, da das Einstufen von Überschriften eine übliche Aufgabe ist).

Eine Multiplikationstabelle

Ich werde jetzt eine Programmierübung einführen, deren Entwicklung sich über die nächsten Kapitel erstrecken wird. Die Anforderungen werden stufenweise erhöht, sowie wir neue Techniken erlernt haben.

Erinnerst du dich, dass wir lange Strings durch das Umschließen mit dreifachen Anführungszeichen eingeben können? Laß uns das jetzt tun, um eine Multiplikationstabelle zu konstruieren:

>>> s = """
1 x 12 = %d
2 x 12 = %d
3 x 12 = %d
"""     # pass auf - du kannst hier keine Kommentare eingeben 
>>>     # Strings werden zu einem Teil vom String!
>>> print s % (12, 2*12, 3*12)

Durch Erweiterung dieses Beispiels könnten wir die vollständige 12er Tabelle von 1 bis 12 ausdrucken. Aber gibt es dazu keinen besseren Weg? Die Antwort lautet: ja; laß uns schauen, wie das aussieht.

Zur Erinnerung
  • IDLE ist ein plattformübergreifendes Entwicklungswerkzeug zum Schreiben von Python-Programmen.
  • Kommentare können das Lesen von Programmen erhellen, aber sie haben keinen Effekt auf die Programmausführung
  • Variablen können Zwischenergebnisse für eine spätere Verwendung speichern

zurück  weiter  Inhalt


Bei Fragen oder Anmerkungen sende eine Nachricht in Englisch an alan.gauld@yahoo.co.uk oder auf Deutsch an bup.schaefer@freenet.de