Lernziele heute
Sollten attraktiv und verständlich sein.
while
-Schleifen kennenlernen (bereits informell im Zeichenprogramm verwendet)for
-Schleifen kennenlernen- … und wie man diese sinnvoll verwendet
- Test des Prüfungsformats (vermutlich per FORMS)
Schleifen
In Python gibt es drei Arten von Schleifen:
repeat
-Schleifen 1)while
-Schleifenfor
-Schleifen
Was eine repeat
-Schleife ist, wissen wir seit der ersten Doppellektion.
''while''-Schleifen
Eine while
-Schleife wird mit dem Schlüsselwort while
(für deutsch solange) eingeleitet und hat die folgende Struktur (beachte den Doppelpunkt und die Einrückung):
while <Ausführ-Bedingung>: # der sogenannte Kopf der Schleife <Code-Block, der so lange wiederholt ausgeführt wird, # der sogenannte Körper der Schleife wie die Ausführ-Bedingung erfüllt ist. Dieser Code-Block ist um vier Leerschläge eingerückt>
Vergleich mit if
-Selektion: Wenn man while
durch if
ersetzt, wird der eingerückte Code-Block genau einmal durchgeführt, wenn die Ausführ-Bedingung erfüllt ist. Bei der while
-Schleife wird dieser solange ausgeführt, wie die Ausführbedingung erfüllt ist.
Aufgabe 1, erste Erfahrungen mit ''while''-Schleifen
Einzelarbeit, ca. 10 Minuten
- Teste das folgende Programm.
- Was passiert, wenn du die letzte Zeile nicht einrückst?
- Was passiert, wenn du die beiden letzten Zeile miteinander vertauschst?
- Was passiert, wenn du die Zeile
x = x + 3
löschst (oder mit#
auskommentierst)? - Ändere das Programm so, dass es alle Zahlen zwischen 5 und 19 ausgibt (einschliesslich der beiden Grenzen 5 und 19). Dabei soll natürlich weiterhin eine
while
-Schleife verwendet werden. - Ändere das Programm so, dass es alle Potenzen von 2 ausgibt (also 1, 2, 4, 8, 16, etc.), die kleiner als 100000 sind. Dabei soll natürlich weiterhin eine
while
-Schleife verwendet werden.
x = 0 while x < 20: x = x + 3 print(x)
Aufgabe 2, Ausgabe in einer Zeile (Ausgabe-String schrittweise aufbauen)
Einzelarbeit, ca. 10 Minuten
Im Programm aus der vorigen Ausgabe ist es nicht so schön, dass jede neue Zahl in einer neuen Zeile ausgegeben wird.
Wenn man alle Zahlen in einer Zeile ausgeben möchte, kann man dies beispielsweise erreichen, indem man die Zeichenkette, die am Ende ausgegeben werden soll, innerhalb der while
-Schleife schrittweise aufbaut und erst nach Beendigung der Schleife ausgibt. Man beginnt den Aufbau mit der “leeren Zeichenkette”.
x = 0 ausgabeZeichenkette = "" # Zeichenkette der Länge Null (auch leere Zeichenkette genannt); zwischen den beiden begrenzenden Anführungszeichen steht kein Zeichen while x < 20: x = x + 3 ausgabeZeichenkette = ausgabeZeichenkette + str(x) + ", " print(ausgabeZeichenkette)
Ändere dieses Programm so, dass vom Benutzer eine Zahl eingelesen wird und dann alle Quadrate der Zahlen von 1 bis zu dieser Zahl in einer Zeile ausgegeben werden (bitte weiterhin die while
-Schleife verwenden).
Bei Eingabe 10 soll die Ausgabe wie folgt aussehen:
1, 4, 9, 16, 25, 36, 49, 64, 81, 100,
Vorbereitung zur ''for''-Schleife
Die Funktion range
(deutsch Bereich) nimmt als Parameter eine ganze Zahl entgegen und liefert eine sogenannte Liste. Teste dies am folgenden Programm:
x = range(11) print(x) print(range(6))
Beachte, dass die Liste bei 0 startet (und NICHT bei 1) und NICHT beim angegebenen Parameter endet, sondern eine Zahl vorher.
Es ist auch möglich, der Funktion range
zwei Parameter zu übergeben (der erste sollte kleiner sein als der zweite). Dann wird eine Liste erzeugt, die beim ersten Parameter startet und eins vor dem zweiten Parameter endet. Teste dies am folgenden Programm
x = range(4, 11) print(x) print(range(-3, 6))
Mit anderen Worten liefern range(13)
und range(0, 13)
dieselbe Liste.
Aufgabe 3, ''for''-Schleife kennenlernen
Einzelarbeit, ca. 10 Minuten
Teste das folgende Programm.
for x in range(6): # der sogenannte Kopf der Schleife print(x) # der sogenannte Körper der Schleife
Beim Ausführen dieser for
-Schleife nimmt die sogenannte Laufvariable x
nacheinander alle Werte der Liste range(6)
an, wobei jeweils der Schleifenkörper ausgeführt wird.
- Ändere
range(6)
inrange(4, 13)
. - Ändere den Namen der Laufvariable
x
inzahl
und gib in jedem Schleifendurchlauf das Quadrat vonzahl
aus. - Bonus: Überlege dir, dass man jede
for
-Schleife auch alswhile
-Schleife realisieren kann.
Aufgabe 4, Baum variabler Grösse als Textgrafik ausgeben
Einzelarbeit, ca. 10 Minuten
Verstehe das folgende Programm.
for i in range(5): print(i * " " + "H" + (5-i) * "all" + "o Ba" + i * "na")
Schreibe nun ein Programm, das vom Benutzer eine Zahl n
entgegennimmt und dann einen Baum mit n
“Blattschichten” und Stammlänge 2
zeichnet.
Bei Eingabe 5 soll die Ausgabe so aussehen:
X XXX XXXXX XXXXXXX XXXXXXXXX X X
Aufgabe 5, Zahlen aufsummieren
Einzelarbeit, ca. 10 Minuten
Schreibe mit Hilfe einer if
-Schleife ein Programm, das vom Benutzer eine Zahl entgegennimmt und die Summe aller Zahlen von 1 bis zu dieser Zahl ausrechnet.
Beispiel: Bei Eingabe 10 soll die Ausgabe lauten:
Die Summe der Zahlen von 1 bis 10 ist 55.
Aufgabe 6, verschiedene "Divisionszeichen" verstehen
Einzelarbeit, ca. 5 Minuten
Es gibt in Python drei Arten der Divison in Python, nämlich /
, //
und %
.
Verstehe diese, indem du mit dem folgenden Programm herumspielst; ändere etwa die Zahlen!
x = 23 / 5 y = 23 // 5 z = 23 % 5 print(x) print(y) print(z)
Aufgabe 7, Teiler einer Zahl ausgeben
Einzelarbeit, ca. 10 Minuten
Schreibe ein Programm, das vom Benutzer eine Zahl (damit meinen wir eine positive Nicht-Kommazahl) einliest und all ihre Teiler ausgibt.
Beispiel: Bei Eingabe 24 soll die Ausgabe wie folgt aussehen.
Die Teiler von 24 sind: 1, 2, 3, 4, 6, 8, 12, 24,
Hausaufgabe (Thema - kann eventuell während der Lektion begonnen werden)
Lerne auf die Prüfung!
- Beachte die Lösungsvorschläge, die stets am Ende der Web-Seiten stehen, meist in “Ausklapp-Boxen”.
- Bitte melden, wenn Lösungen fehlen oder unklar sind oder sonstige Fragen aufkommen. Am schnellsten geht das über meine Email-Adresse an der Kanti am Burggraben
MeinVorname.MeinNachname@ksbg.ch
(Meine Brühl-Adresse und Teams checke ich nicht so oft. Mein Name steht unten rechts auf dieser Seite.)
Zusammenfassung
Bonusaufgabe
Verwende while
- oder if
-Schleife zur Turtle-Steuerung.
Fragebox - auch zum Besprechen von Programmen während der Lektion (NICHT für Hausaufgaben)
Bitte einfach am Anfang des Programms oder der eingereichten Datei die Frage aufschreiben (mit oder ohne Hashtag #
als Kommentareinleitungszeichen am Zeilenanfang).