Abschnittsübersicht

    • Willkommen zum Kurs "Turtle trifft Python"

      Python ist eine einfach zu erlernende Programmiersprache, die viele Anwendungsmöglichkeiten bietet. Darüber hinaus entspricht sie modernen Programmierprinzipien, die auch auf andere Programmiersprachen übertragbar sind.

      In diesem Kurs werde ich mit dir die Turtle-Grafik in Verbindung mit der Programmiersprache Python vorstellen.

    • Vorteile von Python

      Python gilt als eine sehr leicht zu erlernende Programmiersprache. Der wesentliche Grund dafür liegt in der einfachen Syntax.

      Der Begriff Syntax bezieht sich auf formale Regeln, die die einzelnen Befehle und Ausdrücke eines Computerprogrammes befolgen müssen. Ein Beispiel für die einfache Syntax von Python besteht darin, dass diese Programmiersprache fast vollständig auf Klammern verzichtet. Zusammengehörige Blöcke werden lediglich durch Einrückung gekennzeichnet. Auch das Semikolon, dass bei vielen anderen Programmiersprachen nach jedem Befehl stehen muss, ist bei Python nicht notwendig.

      Auch hinsichtlich der Variablentypen ist Python frei. In vielen Programmiersprachen ist es notwendig, die Variablen zu Beginn des Programms zu deklarieren und somit einen festen Datentyp zuzuweisen. Python verzichtet auf die Deklaration von Variablen und vergibt den Datentyp dynamisch.

    • Kursdauer:  08.01.2024 bis 19.02.2024

    • Videokonferenz

      montags ab 8.1.2024 von 16.45 bis 17.45 Uhr


      Microsoft Teams-Besprechung

      Nehmen Sie auf dem Computer, in der mobilen App oder im Raumgerät teil

      Hier klicken, um an der Besprechung teilzunehmen

      Besprechungs-ID: 363 513 808 251
      Passcode: WmQcco

      Teams herunterladen | Im Web beitreten


    • Um Python programmieren zu können, wird ein geeigneter Texteditor zum Schreiben des Codes benötigt. Damit der Code ausgeführt werden kann, brauchen wir einen Python Interpreter. Ich gehe im Folgenden auf die nötigen Schritte für Windows-Anwender ein.

      (Andere Betriebssysteme wie Linux oder Ubutu verfügen in der Regel bereits über ein passendes Programm.)

      Die Entwicklergemeinschaft von Python stellt den notwendigen Interpreter unter folgendem Link zum Download bereit:

      https://www.python.org/downloads/

      Download
      Ein Klick auf die gelbe Schaltfläche und der Download wird gestartet. Wenn du die heruntergeladen exe-Datei startet, bekommst du folgendes Fenster.
      Install_Python_angehakt

      In diesem Fenster ist es wichtig, dass du die Checkbox Add Python 3.10 to PATH anklickst. Das bewirkt, dass der Installations-Assistent automatisch den Pfad des Python-Interpreters zu den Umgebungsvariablen hinzufügt. Sonst lässt sich der Python-Interpreter nur öffnen, wenn man sich in dem Verzeichnis befindet, in dem er installiert wurde. Da es aber nicht sinnvoll ist die eigenen Programme im Installationsverzeichnis des Python-Interpreters abzulegen, würde das eine große Einschränkung bedeuten.

      Nach der Auswahl der Checkbox klickst du auf Install Now.

      War die Installation erfolgreich, schließt du das Fenster mit der Schaltfläche Close.

      Da es sehr viele verschiedene Texteditoren gibt, werde ich zur Einfachheit die von Python mitgelieferte IDLE Umgebung verwenden. Du solltest sie nach der Installation in deinem Startmenü unter IDLE finden. Einfach starten und los geht's.


    • Das erste Programm

      Wenn ihr die IDLE-Umgebung startet, sollte das geöffnete Fenster wie folgt aussehen.

      IDLE

      Das ist das Shell-Fenster. In diesem Fenster erfolgen die Ausgaben deines Codes. Du könntest in der Shell programmieren, aber dann kannst du deinen Code nicht sauber abspeichern. Darum gehst du zunächst auf File->New File. Es öffnet sich ein neues Fenster, dies ist das Code-Fenster, indem du programmierst.

      Zum Testen, ob alles funktioniert, wollen wir unseren ersten Befehl schreiben. 

      Die Shell soll Hallo Welt! ausgeben. Im Code-Fenster schreibst du dafür:

      print("Hallo Welt!")

      Zur Erklärung: Der Befehl lautet print() und Hallo Welt! ist ein String, also eine Zeichenkette. Strings müssen immer in Anführungsstriche gesetzt werden. Würdest du 1234 schreiben, also Integer bzw. Zahlen, brauchst du keine Anführungsstriche.

      Jetzt musst du deinen Programmcode speichern. Gehe dafür im Code-Fenster auf File->Save As wähle einen Ordner, in dem du dein Programm speichern möchtest, oder lege einen neuen Ordner in einem von dir gewählten Pfad an. Gib deiner Datei einen Namen und füge den Dateityp .py an, zum Beispiel Test.py.

      Nun kannst du deinen Code über das Code-Fenster ausführen. Im Menü auf Run->Run-Module klicken.

      Daraufhin sollte die Shell in den Vordergrund treten und du siehst deine erste Ausgabe.

      Merke dir folgende Arbeitsschritte: Programm Schreiben -> Speichern -> Ausführen

    • Das Programm soll nun erweitert werden.

      1. Der Nutzer soll mit Hallo Welt! begrüßt werden. (Das hast du bereits programmiert.)

      2. Anschließend nach seinem Namen gefragt werden.

      3. Mit seinem Namen begrüßt werden.

      Ich zeige dir, wie das Programm aussehen soll.

      Test-Programm_barbeitet

    • Wir erweitern nun das Programm. Python soll mit der Funktion len() die Länge des eingegebenen Namens ermitteln und anschließend ausgeben.

      Leg eine neue Variable an und weise ihr die Funktion len() zu. Übergib der Funktion die Variable person. Anschließend soll die Ausgabe des Wertes erfolgen, damit wir wissen, wofür die Zahl steht, die ausgegeben wird, soll ein Satz die Ausgabe umschließen.

      Im Bild seht ihr, wie der Code aussehen könnte.

      Test-Programm2_bearbeitet

      Zur Erklärung:
      person ist eine Variable, mit dem = erfolgt die Zuweisung, was in die Variable geschrieben wird. Die Variablen sollten möglichst so bezeichnet werden, dass sie angeben, was in ihnen gespeichert wird. 
      Variablennamen sollten mit einem Buchstaben beginnen. Du kannst Buchstaben und Zahlen verwenden. Symbole wie -, /, # oder @ sind nicht erlaubt. Leerzeichen dürfen nicht verwendet werden, stattdessen kannst du Unterstriche verwenden. Groß- und Kleinschreibung werden unterschieden. Python behandelt person und Person als zwei verschiedene Variablen. Verwende keine Wörter wie print, die bereits Befehle in Python sind.
      input("optional") liest Eingaben aus, optional kann ein String angegeben werden, der vor der Eingabeaufforderung ausgegeben werden soll. Eingabeaufforderungen werden mit Enter bestätigt.
      print() dient der Ausgabe von Werten, z.B. Strings, die wir in Hochkommas oder Anführungsstrichen selbst schreiben oder aus zum Auslesen von Variablen. Die Ausgabe von mehreren Werten wird mit Komma getrennt.
      len() steht für Englisch length - Länge und gibt die Länge eines Strings inklusive Leerzeichen wieder.

      Speichere dein Programm und führe dein Programm aus.

      Tipp:
      Strg+s speichert dein Programm
      F5 führt dein Programm aus

    • Einführung in die Turtle-Grafik

      Nun schreibst du ein neues Programm, in dem du das Modul turtle verwenden wirst.
      Um es bildlich auszudrücken, wird mit diesem Modul eine Schildkröte gesteuert, die einen Stift bei sich trägt. Ziel ist es ein Rechteck zu zeichnen.

      Öffne also eine neue Datei. 
      Um das Modul verwenden zu können, musst du es in dein Programm importieren.

      import turtle as t

      Anschließend soll die turtle 100 Schritte laufen.

      t.forward(100)

      Speichere dein Programm und probiere es aus.

      Wichtig: Nenne die Datei niemals turtle.py, dieser Dateiname ist bereits in dem turtle-Modul, das wir importiert haben, vergeben. Du würdest sonst Fehlermeldungen erhalten.

      Folgend einige Befehle, die du zum Programmieren der Turtle benötigen wirst:

      Befehle Beschreibung
      shape('turtle') Standard ist ein Pfeil für die Stiftform, mit dem Wert turtle ändert sie sich zur Schildkröte.
      speed(wert) Geschwindigkeit mit der sich die Turtle bewegt.
      pencolor(wert) Farbe des Stifts
      pensize(wert) Größe des Stifts
      forward(wert) vorwärts
      left(wert) Drehung um angegebene Gradzahl nach links von der aktuellen Position
      right(wert) Drehung um angegebene Gradzahl nach rechts von der aktuellen Position
      penup() Stift anheben
      pendown() Stift absetzen
      setheading(wert) Richtung der Turtle ändern ähnlich left() und right(), jedoch geht setheading() vom Koordinatensystem aus
      exitonclick() Das Grafikfenster wird mit einem Mausklick erst wieder geschlossen.

      Wenn du dich über weitere Befehle informieren möchtest, gibt es unter https://docs.python.org/2/library/turtle.html eine Übersicht.

    • Rechteck zeichnen I

      Als Ziel wollen wir einen Roboter zeichnen. Deine Python Datei kannst du zum Beispiel Roboter.py nennen.

      Unser Roboter, den du zeichnen wirst, besteht aus vielen Rechtecken. Du beginnst mit den Grundlagen für ein Rechteck.

      Mathematisch gesehen besteht ein Rechteck aus 4 rechten Winkeln und 4 Seiten. Die gegenüberliegenden Seiten sind gleich lang und parallel.

      Die Befehle, ein Rechteck zu zeichnen, kennst du bereits aus Lektion 1.

      forward(wert)left(wert) oder right(wert)

      Beispiel:

      Rechteck

      Dieser Code beinhaltet eine Wiederholung. Um diesen Code zu optimieren, wirst du nun eine for-Schleife verwenden, die uns die Wiederholung abnimmt.

      for counter in range(wertA, wertE)

      Achtung: Alles was von der Schleife wiederholt werden soll, muss eingerückt sein. Du kannst die Tabulator-Taste dafür nutzen, oder 4 Leerzeichen einfügen.

      counter ist dabei die Schleifenvariable. Sie zählt mit, wie oft die Schleife bereits durchlaufen wurde. Beim ersten Mal ist sie gleich der ersten Zahl in der Liste, die durch wertA angegeben wird. Die Benennung der Variablen kann selbst gewählt werden.
      range(wertA, wertE) ist der Zahlenbereich, von der ersten angegeben Zahl (wertA) bis zur letzten minus 1 (wertE-1). range(1, 3) würde eine Schleife also 2 mal durchlaufen.

      Der Code sieht optimiert nun wie folgt aus:

      for_Schleife

    • Kommen wir zurück zum Rechteckprogramm.

      Das Rechteck soll nun auch farbig ausgemalt sein. Dafür nutzt du die Funktionen color(wert)begin_fill() und end_fill().

      color(wert) kennst du bereits aus Lektion 1 und wird angegeben bevor die Zeichnung erfolgt.
      begin_fill() wird vor dem Zeichen der Form angegeben, die farbig gefüllt werden soll.
      end_fill() muss nach dem Zeichnen der Form angegeben werden und füllt die Form mit der aktuellen Farbe aus.

      Achte wieder auf die Einrückung, der end_fill()-Befehl ist nicht in der for-Schleife.

      farbiges_Rechteck

      Zur Auswahl der Farbe kannst du dir auf folgender Seite die Namen der Farben raussuchen.

      https://cs111.wellesley.edu/reference/colors

      Oder du trägst die Farbe im Hexadezimalcode eintragen, den kannst du auch in einem Bildbearbeitungsprogramm ermitteln. (z.B.: black -> #000000)

    • Rechteck zeichnen II

      Damit du das Rechteck aus Teil 1 dieser Lektion wiederverwenden kannst, erstellst du nun eine Funktion dafür.

      Die Funktion wird definiert mit def und bekommt einen Namen, z.B. rechteck. Dein bisheriger Code zum Rechteck wird eingerückt unter die Funktion gestellt.

      Damit du die Funktion in deinem Programm aufrufst, schreibst du dann rechteck(). 

      Nun sollte dein Code wie folgt aussehen:

      Funktion_Rechteck

    • Damit das Rechteck nun variabel in Höhe, Breite und Farbe wird, werden der Funktion Werte übergeben und innerhalb der Funktion wird mit Variablen gearbeitet.

      Funktion_Rechteck_variabel

    • Nun wird die Funktion noch darum ergänzt, dass der Stift gesetzt pendown() , die Stiftgröße definiert pensize(wert) und der Stift wieder angehoben wird penup(). Außerdem gibst du dem Stift noch eine Startposition setheading(wert), also in welche Richtung die Turtle schaut. Mit dem Wert 0 schaut sie nach rechts. 

      Funktion_Rechteck_variabel_komplett

    • Bewegung und Koordinaten der Turtle

      Du kennst bereits die Bewegungen forward(wert)right(wert) und left(wert). Es gibt auch die Möglichkeit die Turtle zu einem bestimmten Punkt auf der Oberfläche, dem Turtle-Graphics-Fenster, zu bewegen. Dafür musst du wissen, dass die Oberfläche wie ein Koordinatensystem aufgebaut ist. Im folgenden Bild habe ich dir das Koordinatensystem dargestellt. Die Turtle startet immer in der Mitte bei der Koordinate (0, 0).

      Koordinatensystem_beschriftet

      Mit dem Befehl goto(wertX, werty) kannst du die Turtle an die Koordinaten der Oberfläche bewegen. Das ist einfacher, da man genau bestimmen kann, wo die Turtle sich befinden soll.

  • Hervorgehoben
    • Spirale vom Titelbild zeichnen

      Wir werden die Spirale vom Titelbild programmieren. Diese Spirale sieht aus wie ein 6-Eck. In Wirklichkeit ist es ein Strich der nach jedem Abbiegen größer wird und die Farbe wechselt. Den Bewegungsablauf der Turtle kennst du durch die Programmierung des n-Ecks bereits. Folgende Befehle werden benötigt:

      forward(WertSeitenlaenge) und left(WertWinkel) oder right(WertWinkel)

      In einem 6-Eck ist der WertWinkel, den die Turtle sich dreht 60 (da die Turtle den Außenwinkel nimmt). Die Seitenlänge soll sich stetig erhöhen, so dass hier eine for-Schleife genutzt werden sollte.

      Regenbogenspirale_Schritt2 

      Regenbogenspirale_Schritt2_Ausgabe

    • Im nächsten Schritt fügen wir eine Liste mit Farben ein. Zum Beispiel:

      farben = ["red", "orange", "yellow", "green", "blue", "purple"]

      Diese Liste soll in der for-Schleife der Stiftfarbe übergeben werden und bei jedem Schleifendurchlauf wechseln. Da die Schleife in meinem Beispiel 300 mal durchlaufen wird und wir nur 6 Farben haben, müssen wir das Element aus der Liste berechnen. Das funktioniert wunderbar mit einer Rechnung mit Rest. Zum Beispiel: 

      1 durch 6 = 0 Rest 1
      2 durch 6 = 0 Rest 2
      3 durch 6 = 0 Rest 3
      4 durch 6 = 0 Rest 4
      5 durch 6 = 0 Rest 5
      6 durch 6 = 1 Rest 0
      7 durch 6 = 1 Rest 1
      8 durch 6 = 1 Rest 2
      9 durch 6 = 1 Rest 3
      10 durch 6 = 1 Rest 4
      11 durch 6 = 1 Rest 5
      12 durch 6 = 2 Rest 0

      Beim Programmieren nennt man es Modulo-Rechnen und wird in Python mit einem Prozent-Zeichen geschrieben %. Als Ergebnis kommt dann nur der Rest raus. Für unser Programm verwenden wir also folgenden Code, damit wir die Farbe bei jedem Strich wechseln.

      pencolor(farben[x%6])

      x ist dabei die Zählvariable der Schleife.

      Regenbogenspirale_Schritt3

      Regenbogenspirale_Schritt3_Ausgabe


    • Die Farben kommen auf einem dunklen Hintergrund besser zur Geltung, den du mit dem Befehl bgcolor('black') einstellen kannst.

      Noch sieht es nicht so aus wie auf dem Titelbild. Dafür brauchst du jedoch nur den Wert des Winkels in der Links- oder Rechtsdrehung auf 59 setzen.

      Fertig!