7. Lektion: Wiederholungen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

Wiederholungen

In Programmen werden immer wieder Abschnitte des Programms mehrfach ausgeführt. Damit der Programmcode nur einmal geschrieben werden muss gibt es Schleifen die den Block mehrmals ausführen.

In Micro/Phyton gibt 2 solcher Strukturen:

for x in iterable:

  • Die For-Schleife in Python unterscheidet sich von anderen For-Schleifen
    • Sie ist dafür gedacht Werte aus einer Datenstruktur (z.B. Liste) zu bearbeiten.
    • die Funktion einer C-typischen for-Schleife kann mit range() erreicht werden.
  • Die Anzahl der Schleifen Durchläufe ist vorherbestimmt.
  • pass ist erforderlich wenn kein Programmcode im Schleifenkörper steht.
>>> liste = ['Hallo', 'Micropython', 'Python', 'Attraktor']
>>> for wort in liste:
        print(wort)
    
    Hallo
    Micropython
    Python
    Attraktor

Dieses Verfahren ist für die Verarbeitung von Daten aus einer Liste sehr praktisch wie man eben gesehen hat.
Wenn aber eine keine Daten aus einer List bearbeitet werden sollen, sondern eine Schleife z.B. 1000 mal durchlaufen werden soll, dann taugt sie nicht dafür. Deshalb gibt es die Generator-Funktion range().


range()

  • Python Funktion die ganze Zahlen liefert.
  • range() kann auf drei Arten genutzt werden:
    • Anzahl: range(anzahl) - Start = 0
    • Bereich: range(start, stop+1)
    • Abstand: range(start, stop+1, abstand) >> funktioniert nur in Python. In Micropython immer 1.
  • Python erzeugt keine Liste mit range() sondern ersetzt die Liste durch die range-Funktion.
    • Das spart Speicherplatz.
    • Verhält sich wie eine Liste.


  • Anders als bei einer Liste kann man sich aber nicht einfach alle Werte anzeigen lassen.
>>> range(10)
    range(0, 10)

>>> a = range(10)
>>> a
    range(0, 10)
  • Die Werte müssen alle einzeln abgefragt werden. Dazu ist eine for-Schleife mit print() erforderlich.
>>> for x in range(10):
        print(x)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

Übung:

  • Erstellt eine Liste mit den geraden Zahlen (range()) von 2 bis 20.
  • Gebt mit einer for-Schleife die Quadrate dieser Zahlen aus.
  • Gebt eine Liste aller UTF8-Zeichen aus.


while True:

  • while ist das zweite Schleifenkonstrukt von Phyton.
  • Bei der while-Schleife ist nicht vorbestimmt wie oft sie durchlaufen wird.
  • Die Entscheidung wird vor jedem Durchlauf getroffen.
  • Die while-Schleife ist Kopfgesteuert.
    • Sie wird mindestens 0 mal durchlaufen.
  • pass ist erforderlich wenn kein Programmcode darunter steht.

Übung:

  • Entwerfe eine while-Schleife, die 10x "Hallo" ausgibt.
  • Entwerfe eine while-Schleife, der in der Variablen runden die Anzahl der Durchläufe vorgegeben wird.
  • Entwerfe eine while-Schleife die alle Quadratzahlen <100 ausgibt.

Übung:

Nun wollen das bisher gelernt in 2 Programmen einsetzen.

Tannenbaum

Es soll ein Programm geschrieben werden, das einen Tannenbaum aus "*" ausgibt.
Dazu müssen wir einen Text zentrieren:

.center()

x = 'Hallo'.center(20)
print(x)

Schlechte Lösung: Tannenbaum_1.py
Gute Lösung: Tannenbaum_2.py

Zahlenraten

Es soll eine Zahl zwischen 1 und 10 in 4 Versuchen erraten werden.
Hierfür brauchen wir Zufallszahlen:

urandom()

>>> import urandom
    x = urandom.randint(1,10)
    print(x)
    5

Zahlenraten

Unser Zahlenraten-Spiel:
der Computer bestimmt durch Zufall eine Zahl zwischen 0 und 100.
Wir haben 7 Versuche, exakt diese Zahl zu erraten.
Bei jedem Rateversuch bekommen wir eine der folgenden 3 möglichen Reaktionen von unserem Spiel:

  • deine geratene Zahl ist zu groß
  • deine geratene Zahl ist zu klein
  • Gewonnen! Die geheime Zahl ist nicht mehr geheim


Zahlenraten.py

Navigation

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite

Diese Seite wurde zuletzt am 14. November 2023 um 18:43 Uhr geändert. Diese Seite wurde bisher 2.804 mal abgerufen.