Zum Inhalt

Skript für die Schülerinnen Projekttage - Tag 1

IES-Logo

Einführung in die Programmiersprache Python

Python ist eine der am genutzten, wenn nicht sogar die populärste Programmiersprache überhaupt. Es handelt sich also nicht um eine rein akademische Programmiersprache zum Erlernen der Programmierung, sondern um ein mächtiges Werkzeug mit dem sich viele Probleme lösen lassen. Von der einfachen Ansteuerung einer LED bis zur Berechnung komplexer Systeme für maschinelles Lernen und künstliche Intelligenz. Und trotzdem ist Python einfach zu erlernen! Die Sprache ist gut lesbar und hat einen übersichtlichen kurzen Code. Daher ist Python ein idealer Einstieg in die Welt des Programmierens.

Einführung in den Mu Editor

Doch zuallererst wirst du dich mit dem wichtigsten Werkzeug zum Programmieren vertraut machen. Dem Python-Editor Mu Editor. Dieser verfügt über ein einfaches Interface und lässt sich nutzen, um vollständige Python-Programme zu schreiben oder auch um nur mal schnell etwas auszuprobieren. Im Folgenden soll kurz die Funktion der anderen Reiter erläutert

  • Modus: Über Modus kann ausgewählt werden ob der Mu Editor im Modus für das Programieren eines Computers genutzt wird (Python 3) oder zum programieren eines Mikcotrontrollers (Circuit Python oder Micropython)
  • Neu: Über den Reiter Neu kannst du ein neues Python Program, ein sogenanntes Skript erstellen.
  • Speichern: Mit Speichern kannst du deinen Code auf der Festplatte speichern.
  • Laden: Mit Laden kann ein zuvor abgespeichertes Program geöffnet werden und die Arbeit fortgesetzt werden.
  • Ausführen: Mit Ausführen wird das von dir geschriebene Program gestartet und ausgeführt. Die einzelnen Python-Anweisungen werden der Reihe nach ausgeführt. Also von oben (Zeile 1) nach unten.
  • Debuggen: Debuggen ist nützlich, wenn mal im Program etwas nicht so funktioniert wie es soll und du herusfinden möchtest warum.
  • REPL: Mit dem Reiter REPL lässt sich eine interaktive Konsole öffnen, in der du Python-Code schreiben kannst, welcher direkt evaluiert und ausgeführt wird. Dafür ist es nicht notwenidg eine neue Datei zu erstellen.
  • Plotter:
  • Prüfen: Mit Prüfen kannst du ein Program vom "MU-Editor" auf seine "Richtigkeit" überprüfen lassen. Dabei wird nur überprüft, ob die einzelnen Python-Befehle überhaupt ausführbar sind und nicht ob am Ende auch das rauskommt was du möchtest. :smiley:

Zunächst programmierst du im Python-Code am Computer. Stelle also sicher, dass der Modus auf Python 3 gestzt ist.

MU-Editor

Dein erstes Python-Programm: "Hallo Welt!"

Dein erstes Python-Program wirst du in der interaktiven Konsole schreiben. Diese lässt sich über den Reiter REPL aufrufen. Jede Python Anweisung, die du in die Konsole schreibst, wird sofort ausgewertet und das Ergebnis angezeigt.

Dein erstes Program wird "Hallo Welt!" auf der Konsole ausgeben. Dafür klicke im MU-Editor unten rechts neben das >>> Symbol. Gebe nun die folgende Anweisung ein, bevor du ENTER drückst:

print("Hallo Welt!")

Wenn du ENTER drückst, wird der Inhalt des Befehls print sofort auf der Konsole ausgeben.

>>> print("Hallo Welt!")
    Hallo Welt!

Die Print Methode zeigt also den Text zwischen den beiden Klammern auf der seriellen Konsole an.

Python als Taschenrechner

Genauso wie du die Anweisung print in der Konsole ausführen kannst, können auch arithmetische Operationen wie Addition, Subtraktion, Multiplikation und Division direkt ausgeführt werden. Probier es doch einmal aus:

>>> 40 + 2
>>> 42 - 28
>>> 14 * 3
>>> 8 / 4

Auch "komplizierter" Ausdrücke mit mehreren Variablen können ausgeführt werden. Genauso gilt hier auch die Punkt-Vor-Strich Regel weswegen manchmal auch Klammern notwendig sind.

>>> 2 * 5 + 3
    13
>>> 2 * (5 + 3)
    17

Häufig ist es praktisch, wenn man den Zahlen feste Variablen zuweisen kann. Eine Variable ist im Grunde genommen eine Art "Behälter" für einen Wert. Dieser Wert kann eine Zahl sein, aber auch etwas völlig anderes. Man kann im Verlaufe eines Programs auf die Variable, oder genauer auf den Wert der Variable, zugreifen. Man kann diesen Wert aber auch jederzeit wieder verändern.

>>> a = 4
>>> b = 3
>>> a * a + b
    19
>>> a = 5
>>> a * a + b
    28

Wie lautet dein Name?

Ein besonders schönes Beispiel zur Verwendung von Variablen besteht darin ein Program zu schreiben welches deinen Namen erfragt und ihn dann auf der Konsole ausgibt. Dafür wird die Anweisung

>>> name = input("Wie lautet dein Name?: ")

genutzt. Die Anweisung gibt den Text "Wie lautet dein Name?: "(Inklsuive Leerzeichen) auf der Konsole aus und wartet dann auf die Eingabe des Benutzers. Die Eingabe wird dann in die Variable name gespeichert. Anschließend kannst du deinen Namen mit derprint Anweisung ausgeben lassen:

>>> name = input("Wie lautet dein Name?: ")
>>> print(name)

Der Datentyp String

Python verfügt über einen Datentyp, den du zwar bisher schon ein Paar mal genutzt hast, aber welcher noch gar nicht eingeführt wurde. Es handelt sich um den Datentyp String. Ein String beschreibt eine Zeichenkette, also eine Abfolge von verschiedenen Zeichen, zum Beispiel Buchstaben aus dem Alphabet, Zahlen oder andere Symbole. Im Grunde genommen kann jedes Zeichen in einem String abgespeichert werden.

In Python wird alles was zwischen 2 Gänsefüßschen "Text" geschrieben wird in einen String umgewandelt. Es folgt ein kurzes Beispiel:

# Kurzer Hinweis am Rande: Alles was in Python hinter einem '#' steht, zählt als Kommentar und wird nicht ausgeführt.

>>> variable_zahl = 42        # Variable welche die Zahl '42' enthält.
>>> variable_string = "42"    # Variable welcher den String mit den Zeichen '42' enthält.

>>> variable_string =  "Hallo 42"

Du kannst auch einen String in eine ganze Zahl, einen sogenannten Integer umwandeln. Dazu kann die Funktion int() genutzt werden. Der String der zwischen den beiden Klammern steht wird, sofern es möglich ist in eine Zahl umgewandelt. Wenn der String andere Zeichen enhält die sich nicht mit einer ganzzahligen Zahl abbilden lassen, wird eine Fehlermeldung ausgegeben.

>>> zahl = int(input("Zahl eingeben :")

Hinweis: Mit der Funktion type() kann man sich vom Python-Program auch mitteilen lassen welchen Datentyp eine Variable enthält.

>>> zahl = input("Zahl eingeben: ")
    Zahl eingeben: 18
>>> type(zahl)
    <class 'str'> # Diese Ausgabe bedeutet, dass es sich um einen String handelt.

>>> zahl = int(zahl)
>>> type(zahl) 
    <class 'int'> # Diese Ausgabe bedeutet, dass es sich um einen Integer handelt. 

Strings lassen sich auch einfach miteinander kombinieren. Man kann den Operator + verwenden um 2 Strings zu einem String zu kombinieren. "Hallo " + " Welt!" erstellt einen String der Hallo Welt! enthält. Gleiches funktioniert natürlich auch, wenn einer der beiden Strings in einer Variablen gespeichert ist.

Dieses Wissen soll nun genutzt werden um ein Program zu schreiben welches dich nun auch anständigerweise begrüßt.

>>> name = input("Wie lautet dein Name?: ")
>>> print("Hallo " + name)

Python als Skriptsprache

Für das nächste Program gehen wir von der interaktiven Konsole zum Programmieren eines Skripts über. Öffne also mit dem Reiter Neu ein neues Skript.

  • Das Skript hat den Vorteil, dass es eine permanente Version der Programs ist.
  • Die interaktive Konsole hat den Vorteil, dass man schnell etwas ausprobieren kann. Diese kann aber unter umständen schnell unübersichtlich werden.

Aufgabe: Program zum Addieren 2er Zahlen:

Schreibe ein Program welches mithilfe der Anweisung input() 2 Zahlen miteinander addiert und über die print() Anweisung ausgibt.

Lösung:

zahl1 = input("Erste Zahl: ")
zahl2 = input("Zweite Zahl: ")
print(zahl1 + zahl2)

Bedingungen

Alle bislang geschriebenen Programe waren irgendwie nicht intelligent. Und zwar in dem Sinne, dass keines davon in der Lage war eine Entscheidung in Abhängigkeit eines Ereignisses zu treffen. In Python bedeutet dies, dass man eine Anweisung nutzt, die in der Lage ist, zu entscheiden welcher Code als nächstes ausgeführt wird und welcher nicht. Dafür wird die sogenannte if-Bedingung genutzt.

Die if-Bedingung in Python ist eine der elementarsten Aktionen, die man ausführen kann. Die Funktionsweise soll kurz anhand eines Beispiels erläutert werden:

if Bedingung:
  # Code der ausgeführt wird wenn die Bedingung WAHR ist
else:
  # Code der ausgeführt wird wenn die Bedingung FALSCH ist.
# Code der in jedem Fall ausgeührt wird.

Wenn die Bedingung hinter der Anweisung if logisch wahr ist, wird der Code direkt unter der If-Bedingung ausgeführt. Dabei ist wichtig, dass dieser Code mit einem Tab eingerückt ist. Andernfalls wird der Code im else Teil ausgeführt. Im Prinzip lässt sich die If-Bedingung auch so zusammenfassen: „Wenn dies, dann mach das“.

Zm ein Gefühl zu bekommen wie man die if-Bedingung in der Praxis nutzt, wird ein kurzes Beispiel vorgeführt:

x = 27
if x > 10:
  # Code wird ausgeführt wenn x > 10 (Bedingung erfüllt)

if x == 30:
  # Code wird ausgeführt wenn x gleich 30 ist. (Bedingung nicht erfüllt)

if x == "27":
  # Code wird ausgeführt wenn x dem String "27" entspricht. (Bedingung nicht erfüllt)

if x == int("27")
  # Code wird ausgeführt wenn x gleich der Zahl 27 ist. (Bedingung erfüllt) 

Kommen wir zurück zu dem Program welches dich anständigerweise begrüßt. Dieses lässt sich nun erweitern, dass es je nach Eingabe noch eine zusätzliche Information auf der Konsole ausgibt.

name = input("Wie lautet dein Name?: ")
print("Hallo " + name)

if name == "Obivan":
    print("Du bist ein Jedi!")
if name == "Ellen Ochoa"
    print("Du bist eine Astronautin!")

Schleifen

Im letzten Abschnitt dieses Kapitels soll ein wichtiges Konzept in Programiersprachen eingeführt werden. Nämlich das Konzept von Schleifen. Mithilfe von Schleifen kannst du wiederholende Aufgaben effizient bewerkstelligen. In Python gibt 2 Arten von Schleifen: Die For Schleife und die While Schleife.

For Schleife

Die Struktur einer For Schleife besteht aus dem Schlüsselwort for gefolgt von einer Variable welche Buchführt welches Element aus der Sequenz gerade betrachtet wird. Es folgt das Schlüsselwort in und schließlich die Sequenz an Daten über die, die For-Schleife arbeitet.

for Variable in Sequenz:
    Anweisung(en)

Das klingt alles sehr teschnisch, und das ist es auch. Es lässt sich aber mit einem einfachen Beispiel verdeutlichen. Das nächste Program benutzt die For-Schleife, um 10 Zahlen auf der Konsole auszugeben. Dafür wird eine Sequenz genutzt, die mit der Anweisung range(10) erstellt wurde. Damit wird eine Sequenz aus Zahlen erstellt.

print("Schleife gestartet")
for i in range(10):
  print("Schleifendurchlauf: " + i)
print("Schleife beendet")

Sicherlich ist dir aufgefallen, dass Python überhaupt nicht von 1 bis 10 zählt, sondern vielmehr von 0 bis 9. Diese Zählweise beginnend von 0 an ist typisch für Programmiersprachen. Soll von 0 bis einschließlich 10 gezählt werden muss dementsprechend range(11) aufgerufen werden.

Aufgabe: Schreibe ein Program welches die Summer aller Zahlen von 0 bis 100 berechnet. Also 0 + 1 + 2 +3 + ... + 98 + 99 + 100. Damit dir das gelingt, erstelle eine Variable sum, die du vor dem Schleifendurchlauf mit 0 initalisiert.

Lösung:

print("Summe aller Zahlen von 0 bis 100")
summe = 0
for i in range(101):
    summe = summe +i
print(summe)

While Schleife

Eine andere wichtige Schleife in Python ist die sogenannte While Schleife. Im Gegensatz zur For-Schleife arbeitet diese nicht auf Sequenzen von Daten, sondern wird so lange ausgeführt bis eine bestimmte Bedingung nicht mehr erfüllt ist. Genau wie bei der If-Bedingung kann dies ein Vergleich sein oder auch einfach der Ausdruck True wenn man möchte, dass die While schleife unendlich oft wiederholt wird. Die Struktur einer While-Schleife ist wie folgt:

while Bedingung==WAHR:
    Anweisung(en)

Aufgabe: Schreibe Program welches in einer Endlossschleife läuft und den Nutzer um die Eingabe einer Zahl bittet. Wenn diese Zahl durch 2 oder 3 teilbar ist, soll dies dem Nutzer über die Konsole mitgeteilt wird. Um zu überprüfen, ob ein Integer durch eine Zahl teilbar ist, kannst du den % Operator benutzten. 3 % 3 ergibt 0, genauso wie 6 % 3 oder 9 % 3.

Lösung:

while True:
    zahl = input("Bitte Zahl eingeben: ")
    if int(zahl) % 2 == 0:
        print("Zahl ist durch 2 teilbar")
    if int(zahl) % 3 == 0:
        print("Zahl ist durch 3 teilbar.")
    else:
        print("Zahl ist nicht durch 2 oder 3 teilbar.")

Objekte

Überleg dir, ob es überhaupt notwendig ist, schob Objekte vorzustellen. Ich glaube nämlich, dass das für den Anfang schon genug ist.

Funktionen

Vielleicht ist es dir merkwürdig vorgekommen, dass manchmal von "Funktionen" und manchmal von "Anweisungen" die Rede war.

Bisher haben wir unseren Programcode einfach von oben nach unten geschrieben, und auch genau in dieser Reihenfolge wurde er abgearbeitet. Jetzt kann es aber vorkommen, dass einige Programabläufe mehrfach benötigt werden, oder das schlicht und ergreifend unser Code anfängt zu unübersichtlich zu werden und wir nach einem Weg suchen diesen wieder ein wenig " aufzuräumen". Zur Abhilfe gibt es die sogenannten Funktionen.

Um eine Funktion zu erstellen wird diese mit dem "Schlüsselwort" def eingeleitet, es folgt der Name der Funktion und dannach ein oder mehrere Variablen, die man der Funktion übergeben kann.

def funktion_name(variable1, variable2):
    # Code der ausgeführt wird wenn die Funktion aufgerufen wird.

Benötigen wir zum Beispiel in unserem Program ein und dieselbe Rechenoperatoin sehr häufig, kann es Sinn machen diese in einer Funktion auszuführen und dann für jede Berechnung die Funktion aufzurufen.

Beispiel:

Wir schreiben ein Program welches 2 Zahlen addiert und das Ergebnis dann mit 2 multiliziert.

def berechnung(x, y):
    ergebnis = 2 * (x + y)
    return ergebnis

x = 7
y = 8
ergebnis = berechnung(x,y)

Neu ist hier auch das return Statement. Dieses kann in Funktionen benutzt werden, um einen bestimmten Wert zurückzugeben (Zum Beispiel das Ergebnis einer Berechnung).

Nachdem du nun in die wichtigen Grundlagen und Konzepte der Programmiersprache Python eingeführt wurdest, ist es an der Zeit den nächsten Schritt zu gehen und (endlich) echte Hardware zu programmieren.