- Nutze alle Lernfunktionen, wie Tests, Quizze und Umfragen.
- Schreibe Beiträge und tausche dich in unseren Foren aus.
- In einigen Lernangeboten bestätigen wir dir die Teilnahme.
AI.Lab
Kursthemen
-
-
Schleifen
Übung
Im Folgenden möchten wir die Zahlen von 1 bis zu einem vom User eingegebenen Index n berechnen. Damit wir dafür nicht jede Zahl einzeln addieren müssen, verwenden wir die
Gaußsche Summenformel
. Allgemein lautet diese: $$ \sum_{i=0}^{n}n=\frac{n(n+1)}{2} $$ Erstelle die Funktionsumme( n )
, die die Summe von 0 bis n zurückgibt. Wenn du damit fertig bist, kannst du deine Funktion mit der Lösung unten vergleichen.Versuche die Lösung selbst zu programmieren, ohne dir die Lösung anzugucken.
def mySum(n): return
-
Es bleibt die Fragestellung, wie wir andere mathematische Problemstellungen angehen, bei denen es keine einfache Formel zu Berechnung gibt. Zum Beispiel die Berechnung der Fakultät, also das Produkt aller Zahlen von
z=1
bisz=n
. $$ n!=\prod_{i=0}^{n} n=1\cdot2\cdot \text{...} \cdot n $$ Auch in Python gibt es dazu Schleifen, mit denen man Code vielfach und mit sich verändernden Parametern ausführen kann. -
For-Schleife
Die klassische for-Schleife, wie man sie aus anderen Programmiersprachen kennt, wird in Python mithilfe der
range()
Funktion gebildet.
Diese kann bis zu drei Parameter haben:range(Start, Stop, Schritt)
Start
: Der Anfangswert der Sequenz (optional, Standardwert ist 0).
Stop
: Der Endwert der Sequenz (erforderlich).
Schritt
: Die Schrittweite, um die Werte in der Sequenz zu erhöhen (optional, Standardwert ist 1).Beispiele
range(5)
: Erzeugt eine Sequenz von 0 bis 4, also(0,1,2,3,4)
.
range(2, 5)
: Erzeugt eine Sequenz von 2 bis 4, also(2,3,4)
.
range(1, 10, 2)
: Erzeugt eine Sequenz von 1 bis 9 in Schritten von 2, also(1,3,5,7,9)
. -
Probiere die Beispiele aus:
for i in range(1,10,2): print(i)
-
Übung Faktultät
Schreibe nun die Funktion
fak( n )
für die Berechnung der Fakultät von einem vom User gewählten Wert n, alson!
.
Tipp: Sieh dir dazu die Formel von oben nochmal an.def fak( n ): return
-
While-Schleife
Zusätzlich zur for-Schleife gibt es noch die
while
Schleife. Einedo-while
Schleife gibt es nicht. Diese kann aber mithilfe der while Schleife erzeugt werden.Die while Schleife kann folgendermaßen genutzt werden:
i=0 while i<10: # Schleifenkopf: Solange die Bedingung (i<10) erfüllt ist, wird der Schleifen Körper ausgeführt i+=1 # In jedem Schleifendurchgang wird i um 1 erhöht, und dann die Bedingung geprüft. print(i) # Auch hier muss der Schleifenkörper eingerückt sein!
-
Zusätzlich können in Schleifen die Schleifensteueranweisungen
break
undcontinue
genutzt werden.
break
beendet die Ausführung der Schleife an der aktuellen Stelle.
continue
überspringt den Rest des aktuellen Schleifendurchlaufs und springt direkt in den Schleifenkopf zurück.i = 0 while i < 15: i += 1 if i == 8: # Index 8 wird nicht ausgegeben continue if i == 12: # bei Index 12 wird die Schleife abgebrochen -> 12 und höher wird nicht ausgegeben break print(i)
-
Übung
Schreibe ein Programm, das eine Zufallszahl zwischen 0 und 1024 generiert [0,1023]. Der User muss anschließend mit möglichst wenigen Versuchen erraten, welche Zahl generiert wurde. Bei jeder Zahleneingabe soll das Programm ausgeben, ob die Zahl
zu groß
,zu klein
oderrichtig
ist. Teste dein Programm anschließend selbst.Tipp:
zufallszahl = random.randint(1, 1023)
generiert eine Zufallszahl zwischen 0 und 1024. (Wird später noch behandelt.)import random # Einbinden der Bibliothek für Zufallszahlen.
-
Zusatzaufgabe
Wie viele Versuche braucht man höchstens, um die Zahl zu finden, wenn man geschickt rät?
Ich behaupte, dass ich deine Zahl mit zehn oder weniger Versuchen erraten kann. Kopiere den Quellcode und probiere es aus.
def rateZahl(): # Initialisiere die Anzahl der Versuche und beginne mit dem Startwert 512 guesses = 0 guess = 512 # Erklärung der Eingabeaufforderung für den Benutzer print("+ -> deine Zahl ist größer, - -> deine Zahl ist kleiner, = -> Zahl ist richtig.\n") # Initialisiere die Antwort antwort = " " # Hauptschleife, die läuft, bis die richtige Zahl gefunden wird while(antwort != "="): # Überprüfung auf einen ungültigen Zahlentyp (Float), um Manipulationen zu verhindern if type(guess) == float: print("Du hast gemogelt!") break # Benutzereingabe mit aktueller Schätzung antwort = input(f"Tipp: {guess}") guesses += 1 # Passe die Schätzung basierend auf der Benutzerantwort an if antwort == "+": # Verringere den Sprungbereich progressiv guess += 2**(9 - guesses) elif antwort == "-": # Verringere den Sprungbereich progressiv guess -= 2**(9 - guesses) elif antwort == "=": # Spiel ist gewonnen print(f"Gelöst in {guesses} Versuchen") break else: # Behandlung ungültiger Eingaben print("Ungültige Eingabe, gib bitte nur +, - oder = ein") # Entferne den Versuch, da er ungültig war guesses -= 1 # Starte das Zahlenratespiel rateZahl()
-