while-Loops bzw. while-Schleifen
Erklärungen
- while-zaehlen.py
print("Zählen per while-Schleife") i = 1 while i <= 10: print(i) i = i + 1
Aufgabe 1: Zahlen ausgeben
Öffne ein neues Python-Programm namens while-vielfache-von-drei.py
.
Kopiere das obige Zählprogramm und ändere es so, dass es alle durch 3 teilbaren Zahlen zwischen 0 und 99 ausgibt (sowohl 0 als auch 99 sollen ausgegeben werden).
Aufgabe 2: Quadratzahlen summieren
Schreibe ein Programm, dass die Quadrate aller Zahlen von 1 bis zu einer am Anfang des Programms vereinbarten Zahl n
, etwa n = 5
,aufsummiert (d.h. es soll $1+4+9+\dots+n^2$ berechnet werden). Am Ende soll die Summe all dieser Quadratzahlen in der Form
Die Summe aller Quadratzahlen von 1 bis n = ... beträgt ....
ausgegeben werden, wobei die Punkte durch konkrete Zahlen zu ersetzen sind.
Hinweis: Verwende neben einer “Zählvariablen” i
eine Variable summe
, die du vor der while-Schleife auf Null setzt und innerhalb der while-Schleife jeweils um das Quadrat von i
erhöhst.
Challenge: Bonus-Aufgabe 1: Überraschendes Ergebnis!
Berechne mit Python die Summe $$s = 1 + \frac 14 + \frac19 + \frac1{16} + \dots + \frac1{1'000'000^2} = \frac 1{1^2}+ \frac 1{2^2} + \frac 1{3^2} + \frac 1{4^2} + \dots + \frac1{1'000'000^2}$$ der Kehrwerte der Quadrate aller natürlichen Zahlen von 1 bis 1'000'000.
Dann gib die Zahl $\sqrt{6 \cdot s}$ aus. Was fällt dir auf?
Hinweis: x**0.5
berechnet $x^{0.5}=x^{\frac 12}=\sqrt{x}$.
Aufgabe 3: Teiler einer Zahl
(Bitte möglichst nicht das in der zweiten Woche geschriebene Programm anschauen!)
Schreibe ein Programm, das vom Benutzer eine Zahl n
einliest und alle Teiler von n
ausgibt.
Zusätzlich soll das Programm am Ende die Anzahl der Teiler von n
ausgeben und mitteilen, ob n
eine Primzahl ist oder nicht.
Hinweis: Verwende neben der “Zählvariablen” i
, die alle Zahlen von 1 bis zur eingegebenen Zahl durchläuft, eine weitere Variable anzahl_teiler
, die anfangs Null ist und genau dann um eins erhöht wird, wenn i
ein Teiler von n
ist.
Aufgabe 4: Slalomtext
Schreibe ein Python-Programm, das den folgenden “Slalomtext” ausgibt (sagen wir einhundert Zeilen davon).
Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! ...
Hinweise:
- Verwende eine Zählvariable
i
, die in einer while-Schleife alle Werte von 0 bis hundert annimmt. - In der Schleife:
- Speichere den Rest der Division von
i
durch 10 in einer Variablenr
. - Beachte: Die Anzahl der Leerschläge vor dem Text hängt nur von
r
ab, da sich das Muster periodisch alle 10 Zeilen wiederholt. - Verwende eine if-Struktur:
- Wenn r kleiner-gleich vier ist: Gib $r$ Leerschläge aus, gefolgt vom Text “Schleifen sind cool.”.
- Sonst: Gib $(10 - r)$ Leerschläge aus, gefolgt vom Text “Schleifen sind cool.”.
Bemerkung: Falls du den Programmablauf verlangsamen möchtest:
- Ergänze die Zeile
import time
ganz am Anfang deines Programms. Damit werden die Befehle aus der Bibliothektime
verwendbar. - Am Ende der while-Schleife ergänze die Zeile
time.sleep(0.1)
. Der Computer pausiert dann 0.1 Sekunden.
Bonus-Aufgabe 2: Kopfrechentrainer mit mehreren Fragen
Im Abschnitt über if-statements hast du einen Kopfrechentrainer geschrieben, das den Benutzer nach dem Produkt zweier Zufallszahlen fragt (siehe Aufgabe Kopfrechentrainer).
Erweitere dieses Programm nun so, dass dem Benutzer so lange Multiplikationsaufgaben gestellt werden, bis der Benutzer “q” wie quit eingibt.
Dem Benutzer soll am Ende mitgeteilt werden, wie viel Prozent der Aufgaben er richtig beantwortet hat.
Bonus-Aufgabe 3: Primzahlen ausgeben
Schreibe ein Programm, dass alle Primzahlen bis n = 1000
ausgibt.
Hinweis: Gehe alle Zahlen von 1 bis n
nacheinander durch und teste jeweils, ob es sich um eine Primzahl handelt. Dafür kannst du einige Code-Zeilen aus dem zuvor geschriebenen “Teiler-Programm” verwenden.
Bemerkung: Schneller geht die Erzeugung einer Primzahlliste etwa mit dem Sieb des Eratosthenes. Dazu benötigt man aber Listen, wie wir sie bald kennenlernen werden.