Python-Scripts sind grundsätzlich simple Textdateien, die sich mit jedem beliebigen Texteditor erstellen lassen. Zum einfachen Ausprobieren von Python eignet sich besonders der Codeeditor Mu, in den Sie den Code bequem eingeben, prüfen und starten können.
Ein erstes Python-Script
Geben Sie im Editor die Zeile
print(‚Hello World‘)
ein und speichern Sie die Datei unter dem Namen „hello.py“. Klicken Sie auf „Ausführen“. Im unteren Bereich öffnet sich das Fenster des Python-Interpreters, in dem „Hello World“ ausgegeben wird. Der Befehl „print“ gibt den in der Klammer enthaltenen Text (Zeichenfolge/String) aus, der in einfachen oder doppelten Anführungszeichen stehen muss. Klicken Sie auf „Stopp“, um den Script-Interpreter wieder zu beenden.
Python unterscheidet zwischen Groß- und Kleinschreibung. „Print“ mit einem großen „P“ führt zu einem Fehler. Probieren Sie es aus. Sie erhalten nach einem Klick auf „Ausführen“ die Meldung „NameError: name ‚Print‘ is not defined“. Nach einem Klick auf „Prüfen“ sehen Sie die Meldung „undefined name ‚Print‘“, und ein Pfeil zeigt auf den fehlerhaften Befehl.
Lesetipp: Online-Kurse – Programmieren lernen leicht gemacht
Einfache Variablen verwenden
Oftmals muss man Text oder Zahlen in Variablen speichern, etwa für Textausgaben oder Berechnungen. Für die Definition und Ausgabe auf den Bildschirm genügen diese beiden Zeilen:
MeinName = ‚Sepp‘
print(‚Mein Name ist: ‚ + MeinName)
Der Variablen „MeinName“ wird die Zeichenfolge „Sepp“ zugewiesen. Hinter dem print-Befehl wird an „Mein Name ist: “ per Pluszeichen der Inhalt der Variablen angehängt. Das Ergebnis ist
Mein Name ist: Sepp
Auch hier ist die Groß-Klein-Schreibung zu beachten. Die Variable „meinname“ ist eine andere als „MeinName“. Variablen dürfen aus Groß- und Kleinbuchstaben (a–z, A–Z), Ziffern (0–9) und dem Unterstrich bestehen.
Sollen Variablen Zahlen enthalten, mit denen Sie rechnen wollen, entfallen die Anführungszeichen (vier Zeilen):
zahl1 = 2
zahl2 = 4
ergebnis = zahl1 + zahl2
print(str(ergebnis))
Mit „zahl1 + zahl2“ addiert Python die Werte. Entsprechend verwenden Sie „-“, „*“ und „/“. Variablen müssen nicht deklariert werden. Python erkennt den Inhalt automatisch. Fehlen die Anführungszeichen, handelt es sich um einen Integerwert, durch einen Dezimalpunkt wird daraus ein Fließkommawert:
zahl1 = 2.45
Da „print“ nur Zeichenketten ausgibt, „ergebnis“ aber eine Ganzzahl ist, muss die Variable mit „str(ergebnis)“ in eine Zeichenkette umgewandelt werden. Das funktioniert mit Integerund Fließkommawerten. Mit „int()“ wandelt man Fließkommazahlen in Integerwerte um und mit „float()“ Zeichenketten in Fließkommawerte.
Werte in Listen speichern
Wo viele Variablen notwendig sind, wird es schnell unübersichtlich. Besser geht es mit Listen, die mehrere durch Komma getrennte Werte aufnehmen. Das können Zahlen sein, Zeichenfolgen oder eine Mischung aus beidem (drei Zeilen):
MeineListe = [2, 7, 8, ‚red‘, ‚blue‘]
print(MeineListe)
print(MeineListe[2])
Der erste print-Befehl gibt den kompletten Listeninhalt aus, der zweite nur den dritten Wert (die Zählung beginnt bei „0“). Man kann auch mit einer leeren Liste beginnen und Werte dynamisch hinzufügen (drei Zeilen):
MeineListe = []
MeineListe.append(‚red‘)
print(MeineListe)
Das funktioniert entsprechend, wenn schon Werte in der Liste enthalten sind.
Teile von Zeichenketten auslesen
Variablen mit Zeichenketten lassen sich ähnlich wie Listen behandeln. Damit ist es möglich, Zeichen an einer bestimmten Position oder einen Bereich zu extrahieren (drei Zeilen):
MeinString = „Hello World“
print(MeinString[0])
print(MeinString[6:11])
Der erste „print“-Befehl gibt das erste Zeichen aus („H“), die Zählung beginnt bei „0“. Die zweite Ausgabe lautet „World“. Das ist etwas verwirrend, weil der Index der Zeichenkette nur von „0“ bis „10“ reicht. Ursache dafür ist, dass Python beim ersten Parameter die Zeichen von „0“ bis „6“ berücksichtigt (inklusive Anfangsposition „0“), beim zweiten aber das letzte Zeichen weglässt (exklusive Endposition „10“). Sie müssen daher zur Endposition immer 1 dazurechnen. Einfacher geht’s so:
print(MeinString[6:])
Fehlt der Endwert, liefert Python sämtliche Zeichen ab Position „6“ bis zum Ende.
Zeichenketten verfügen bei Python übrigens über einige Komfortfunktionen. Wenn Sie Zeichen oder Wörter ersetzen wollen, geht das so (zwei Zeilen):
MeinString = „Hello World“
print(MeinString.replace(‚World‘,’Universe‘))
Die Ausgabe lautet „Hello Universe“.
Bedingte Anweisungen
Python arbeitet den Code Zeile für Zeile ab, bis das Ende erreicht ist. Manchmal sollten Programme jedoch bestimmte Codezeilen abhängig von Bedingungen ausführen und andere nicht. Das nennt man bedingte Anweisungen oder Verzweigungen. Das Python-Schlüsselwort dafür ist „if“.
zahl = 11
if(zahl > 10):
print(‚Wert ist größer 10‘)
print(‚Das ist viel‘)
else:
print(‚Wert ist kleiner oder gleich 10‘)
„if“ prüft, ob die Variable „zahl“ größer („>“) als 10 ist. Wenn die Bedingung zutrifft, gibt Python die nachfolgende Meldung aus. Andernfalls wird der Code unter „else“ ausgeführt. Weitere Vergleichsoperatoren sind beispielsweise „==“ (gleich), „!=“ (ungleich), „<“ (kleiner) oder „>=“ (größer als). Die Zeilen unter „if():“ und „else:“ bilden jeweils einen Codeblock. Damit Python das erkennt, sind die „print“-Zeilen mit mindestens vier Leerzeichen eingerückt. Alternativ funktioniert das auch mit einem Tabulator. Die „else:“-Zeile ist nicht eingerückt, hier beginnt der nächste Block mit den danach erneut eingerückten „print“-Zeilen (siehe Abbildung). Bei verschachtelten Blöcken gibt es entsprechend mehrfache Einrückungen, zum Beispiel wenn innerhalb eines „if():“-Blocks ein weiterer „if():“-Block erforderlich ist.
Funktionen verwenden
Funktionen helfen dabei, ein Programm in kleinere, übersichtlichere Teile aufzuspalten. Außerdem ist es damit möglich, identische Codezeilen mehrfach zu verwenden. Dazu ein Beispiel:
def add(a,b):
print (‚Addiere: ‚ + str(a) +‘ und ‚ + str(b))
return a + b
print (‚Ergebnis: ‚ + str(add(2,3)))
Python-Funktionen müssen vor der Codezeile stehen, die sie aufruft. Am besten bringen Sie Funktionen immer am Anfang eines Scripts unter. In unserem Beispiel erfolgt der Aufruf in der letzten Zeile mit „add(2,3)“. Die beiden Parameter werden an die Funktion „def add(a,b)“ übergeben und in den Variablen „a“ und „b“ gespeichert. „return a + b“ führt die Rechnung durch und gibt das Ergebnis zurück. Den Rückgabewert von „add“ gibt print wie eine Variable aus. Funktionen sind Blöcke ähnlich wie bei „if“ beschrieben. Die zweite und dritte Zeile in unserem Beispiel müssen daher eingerückt sein.
Mit Schleifen arbeiten
Python kennt zwei einfache Schleifenkommandos. Die „while“- Schleife läuft so lange, bis eine Abbruchregel eintritt. Im folgenden Beispiel (vier Zeilen) erhält die Variable „x“ den Wert „1“. Dann startet die Schleife, gibt den aktuellen Wert von „x“ aus und erhöht den Wert mit „x += 1“ um „1“. Sobald „x“ den Wert „5“ erreicht (kleiner „6“), wird die Schleife beendet.
x=1
while x < 6:
print(x)
x += 1
„for“-Schleifen kommen zum Einsatz, wenn eine Liste mit Werten ausgegeben, eingelesen oder geändert werden soll:
colors = [‚red‘, ‚blue‘, ‚green‘]
for x in colors:
print(x)
Beachten Sie auch hier wieder die Einrückregeln.
Module importieren
Alle bisherigen Beispiele haben nur den Standardsprachumfang von Python angesprochen. Eine Python-Installation umfasst jedoch zahlreiche Zusatzmodule für spezielle Aufgaben, die sich je nach Bedarf einbinden lassen. Ein Beispiel dafür is t das Modul „os“, das Schnittstellen zum System bereitstellt, etwa für den Zugriff auf Dateien und Ordner oder für den Start externer Programme. Dazu ein Beispiel:
import os
home=os.path.expanduser(‚~‘)
os.chdir(home)
files=os.system(‚ls -l‘)
print(files)
„import“ lädt das gewünschte Modul. Jetzt steht die Funktion „os.path.expanduser“ zur Verfügung, mit der sich der Pfad zum Home-Verzeichnis („~“) ermitteln und in der Variablen „home“ ablegen lässt. „os.chdir“ wechselt in dieses Verzeichnis, dann startet „os.system(‚ls -l‘)“ das Tool „/bin/ls“, welches den Verzeichnisinhalt in die Variable „files“ leitet. „print(files)“ gibt das Ergebnis schließlich aus.
Bei der Programmierung der GPIO-Pins des Raspberry Pi sind die wichtigsten Module RPi.GPIO und gpiozero, die den Zugriff auf die Hardware ermöglichen.
Python-Scripts starten
Während der Entwicklung ist der Mu-Editor praktisch, in der Regel werden Sie Python-Scripts dann aber im Terminalfenster oder in einer SSH-Sitzung starten wollen. Da in Raspbian standardmäßig Python in der Version 2 und 3 installiert ist, starten Sie ein Script mit
python3 [Pfad/Skriptname]
Ersetzen Sie den Platzhalter durch Pfad und Namen der Datei. Wenn Sie den Script-Code mit
#!/usr/bin/python3
beginnen und die Script-Datei ausführbar machen („chmod 755 [Pfad/Skriptname]“), lässt sie sich auch schlicht mit
./[Pfad/Skriptname]
starten.
Grafische Oberfläche für Scripts
In Python können Sie das GUI-Toolkit tk verwenden, mit dem sich grafische Oberflächen einfach erstellen lassen. Dafür installieren Sie einige zusätzliche Pakete:
sudo apt-get install python3-tk python-pmw python3-pil
Fenster, Schaltflächen, Labels und andere Elemente werden komplett per Script erzeugt. Das gelingt aufgrund der relativ komplexen Syntax jedoch nicht so einfach. Unser Script „LED-GUI.py“ zeigt beispielhaft, wie sich eine grafische Oberfläche umsetzen und eine LED darüber steuern lässt (siehe Punkt 3).
Gadgets