Inhaltsverzeichnis

Programmieren Teil 2 – Rechnen, Strings und While-Schleife

Lernziele:

1. Rechnen & Strings

Rechnen

Mit Python kann man besser rechnen als mit jedem Taschenrechner. Unter anderem gibt es alle gängigen Rechenoperationen wie $+,-,\cdot,/$ und viele weitere mathematische Operatoren in Python:

Funktion Python-Code
Addition 7 + 3
Subtraktion 7 - 3
Multiplikation 7 * 3
Division (mit Nachkommastellen) 7 / 3
Ganzzahldivision 7 // 3
Modulo (Rest der Ganzzahl-Division, Bsp. 17 % 5 = 2) 17 % 2
Hoch (z.B. 2 hoch 5) 2**5

Erinnerung: Wenn wir einer Variable einen Wert zuweisen, verwenden wir die Zuweisungsanweisung =. Dieser weist der Variablen auf der linken Seite den Wert auf der rechten Seite zu, also z.B. x = 42. Damit kann man auch den Wert einer Variable erhöhen oder verringern:

x = 42 # Variable x mit Wert 42
print(x) # Ausgabe: 42
x = x + 1 # Rechte Seite ergibt 43. Dieser Wert wird nun x zugewiesen
print(x) # Ausgabe: 43

Strings

Ein String ist nichts anderes als Text, der zum Beispiel in einer Variable gespeichert wird:

name = "Hans Müller" # Variable name hat Wert "Hans Müller" und ist ein String
f-Strings

Wir werden nun vermehrt Werte berechnen, die wir dann in einem schönen Format ausgeben wollen. Am einfachsten geht dies mit sogenannten f-Strings: Diese erlauben es einem, einen String mit dem Wert einer Variable zu kombinieren:

age = input("Wie alt bist du?") # Benutzerin wird nach Alter gefragt, wird in Variable age gespeichert.
print(f"Du bist {age} Jahre alt") # Der Wert der Variable age (also das Alter) wird im String eingefügt.

Falls die Benutzerin $15$ eingibt, gibt der Code dann also „Du bist 15 Jahre alt“ aus. Beachte:

Aufgaben G

Aufgabe G1

Berechne mithilfe von Python. Verwende dazu die Rechenoperatoren in der Tabelle oben.

  1. $62342+43169 = $
  2. $287 \cdot 63 = $
  3. $7731 : 532 = $
  4. $\cfrac{(24\cdot 9)^3+10077697}{13} = $

Die Resultate kannst du mit print() ausgeben. Prüfe, ob sie stimmen:

Resultate:

Aufgabe G2

Frage die Benutzer:in der Reihe nach ihrem Namen, Alter und Wohnort (separate input-Befehle). Gib dann eine schöne Zusammenfassung aller Eingaben mittels eines formatierten Strings (f-String) aus.

Beispiel:

Aufgabe G3

Frage die Benutzer:in nach ihrem Alter in Jahren. Berechne nun ihr Alter …

Gib die Resultate schönt formatiert aus. Keep it simple, ignoriere Schaltjahre.

Beispiel: Falls Eingabe $7$ ist, sollen Ausgaben sein:

Alter in Jahren:   7
Alter in Monaten:  84
Alter in Tagen:    2555
Alter in Sekunden: 220752000

Aufgabe G4

Programmiere einen Countdown. In der Konsole soll also ausgegeben werden:

10
9
8
7
6
5
4
3
2
1
Los!

Tipps:

Optional: Summiere alle Zahlen auf. Berechne also $10 + 9 + 8 + \ldots + 1$. Was erhält man, wenn man den Countdown bei $100$ startet?

Aufgabe G5

Gerade oder ungerade – Die Benutzer:in gibt eine Zahl ein. Dein Programm überprüft, ob die Zahl gerade ist oder nicht und gibt entsprechend eine der folgenden Meldungen aus:

Tipp:

Aufgabe G6

M&M's-Verteiler: Zusammen mit ein paar Freunden kaufst du dir eine Tüte M&M's. Diese werden dann gleichmässig verteilt. Schreibe nun folgenden Code:

Beispiel: Für $39$ M&M und $4$ Freunde soll ausgegeben werden: „Es gibt 9 M&M pro Person und es bleiben 3 Stück übrig.“

Tipps:

Aufgabe G7

Vielfaches von 3 – Die Benutzerin kann eine beliebige (ganze) Zahl eingeben. Dein Code gibt eine Meldung aus, die

Beispiel-Ausgabe: „Die Zahl 34 ist kein Vielfaches von 3.“

Aufgabe G8

Zeichne mit einer Turtle die folgende Figur:

Tipps:

Aufgabe G9

Zeichne mit einer Turtle die folgende Figur:

Tipps:

2. While-Schleife

Mit einer Schleife kann man einen Codeblock wiederholt ausführen lassen und zwar solange, wie eine vorgegebene Bedingung erfüllt ist.

while <Bedingung>:
    # Hier Codeblock, der wiederholt werden soll,
    # solange die Bedingung erfüllt ist.
    # Allen Zeilen, die zum Codeblock gehören
    # müssen eingerückt sein.
 
# hier Code, der NACH der while-Schleife ausgeführt werden soll

Alle Zeilen Code, die zum Codeblock der Schleife gehören werden eingerückt. Verwende dazu die Tab-Taste oben links. Nachdem der ganze Codeblock ausgeführt wurde, wird die Bedingung erneut überprüft. Ist sie immer noch erfüllt, wird der gleiche Codeblock wieder ausgeführt usw.

Beispiel:

Folgender Code zeichnet eine rechtwinklige Spirale wie im Bild unten. Am Ende der Spirale wird ein ruter Punkt gezeichnet.

from gturtle import *
morla = Turtle()
 
seite = 10
 
while seite <= 100:
    morla.forward(seite)
    morla.right(90)
    seite = seite + 10
 
morla.setPenColor("red")
morla.dot(40)


Ab sofort gilt ein komplettes Verbot der repeat-Schleife. Verwende stattdessen die while-Schleife.

Aufgaben H

Aufgabe H1

Zählen: Gib alle Zahlen von $0$ bis und mit $42$ in der Konsole aus. Verwende eine while-Schleife.

Ausgabe:

0
1
2
...
41
42

Aufgabe H2

It's (not) the final countdown: Programmiere wieder einen Countdown, diesmal aber natürlich mit einer while-Schleife.

Ausgabe:

10
9
8
...
2
1
Los!

Tipps:

Aufgabe H3

Quadrat III: Lasse wieder eine Turtle ein Quadrat zeichnen – mit einer while-Schleife!

Aufgabe H4

Summieren: Berechne die Summe aller natürlicher Zahlen bis und mit $100$, also: $$1 + 2 + 3 + \ldots + 98 + 99 + 100 = ???$$ Guess what? Genau, man soll wieder eine while-Schleife programmieren.

Tipps:

Aufgabe H5

Gib die ersten $100$ Zahlen der 7er-Reihe aus, also $7,14,21,\ldots$ $700$.

Aufgabe H6

Zeichne eine Spirale aus Halbkreisen wie im Bild unten:

Tipp:

Aufgabe H7

Zeichne ein Muster aus blauen Kreissegmenten und roten 20-px-Punkten wie im Bild unten. Benutze eine While-Schleife.

Aufgabe H8

Zeichne ein Muster aus Sechsecken wie im Bild unten. Die kleinen Sechsecke haben die Seitenlänge 30, das grosse Sechseck hat die Seitenlänge 100.

Tipp:

Optional: Verändere die Seitenlängen so, dass der Stern in der Mitte geschlossen ist.

Aufgabe H9

Böse Sieben: Schreibe eine Programm, das alle Zahlen von 1 bis 50 ausgibt, aber: Wenn es eine Zahl aus der Siebner-Reihe ist, soll statt der Zahl die Meldung „Bösi“ ausgegeben werden.

Aufgabe H10

Ein mal eins gibt eins: Schreibe ein Programm mit while-Schleife und aus ingesamt vier Codezeilen, das folgende Meldungen ausgibt:

„1 mal 1 gibt 1“

„2 mal 2 gibt 4“

„9 mal 9 gibt 81“

Tipps:

Aufgabe H11

Zahlen raten 1: Schreibe ein Programm, bei dem die Benutzer:in eine geheime Zahl zwischen 1 und 12 erraten soll.

Aufgabe H12

Reihen-Generator Version 1

Schreibe ein Programm, bei dem die Benutzer:in die Reihe (Eine Zahl zwischen 1 und 9) eingeben kann. Dann werden die ersten zehn Zahlen dieser Reihe ausgegeben. Für die Eingabe $3$ würden also die Zahlen $3, 6, 9$ … $30$ ausgegeben.

Reihen-Generator Version 2

Erweitere das Programm um folgende Funktionen:

Reihen-Generator Version 3 – Optional

Erweitere das Programm um folgende Funktion:

Aufgabe H13

Zimetschtern hani gern – Schreibe ein Programm, bei dem die Benutzer:in eingeben kann, wie viele Zimtsterne sie essen möchte. Dann zeichnet dein Programm (mit einer Turtle, die versteckt ist) die entsprechende Menge Zimtserne in einer Reihe auf, siehe Bild. Hinweis: Der Winkel für einen fünfzackigen Stern beträgt 144 Grad.

Optional 1: Die Zimtsterne werden in Reihen zu drei Sternen angeordnet, siehe Bild:

Optional 2: Die Zimtsterne sollen so angeordnet werden, dass sie ein möglichst grosses Quadrat bilden. Wird eine Quadratzahl überschritten, so wird die Anzahl Spalten erhöht. Bei 9 Sternen sind es zum Beispiel 3 Spalten, ab 10 Sternen sind es 4 Spalten, ab 17 Sternen 5 Spalten etc.

3. Endlosschleifen und Break

Eine While-Schleife wiederholt einen Codeblock solange, wie ihre Bedingung erfüllt ist. Wenn die Bedingung immer erfüllt ist, ist es eine Endlosschleife. Oft programmiert man aus Versehen eine Endlosschleife, es gibt aber auch viele Situationen, in denen dies erwünscht ist. Zum Beispiel will man typischerweise ein Game so lange spielen können, bis man keine Lust mehr hat (oder einem die Eltern zwingen, aufzuhören). Man verfolgt dann beim Programmieren den folgenden Ansatz:

  1. Schreibe den Code in eine Endlosschleife:
while True:
    # hier kommt der Codeblock,
    # der wiederholt werden soll
  1. Sobald der Codeblock aber doch abgebrochen werden soll (z.B. wegen GameOver oder beim erfolgreichen Abschliessen des Spiels oder weil die Benutzerin keine Lust mehr hat), schreibt man das Keyword break. Dies bricht die Schleife per sofort ab.
Beispiel:

Die Benutzer:in wird aufgefordert, die kleinste Pimzahl einzugeben. Sobald sie $2$ eingegeben hat, soll die Schleife abgebrochen und der Benutzer:in gratuliert werden:

while True:
    number = input("Gib die kleinste Primzahl ein:")
    if number == 2:
        break
    else:
        print("Leider nicht, versuche es noch einmal")
 
print("Gratuliere, du hast die richtige Zahl, 2, eingegeben!")

Aufgaben I

Löse alle Aufgaben mit while-Schleifen und break.

Aufgabe I1

Negative Zahl: Die Benutzerin soll solange aufgefordert, eine negative Zahl einzugeben, bis sie es geschafft hat. Gibt sie eine falsche Zahl ein, soll sie erneut aufgefordert werden.

Aufgabe I2

Code für Geheimtür: Der Benutzer soll aufgefordert werden, das geheime Passwort („spaghetti“) einzugeben. Gibt er es falsch ein, wird „Zugang verweigert“ ausgegeben. Macht er es richtig, wird „Zugang gewährt“ ausgegeben und der Code abgebrochen.

Aufgabe I3

Unendliche Summe: Die Benutzerin soll unendlich oft hintereinander aufgefordert werden, eine Zahl einzugeben. Die neu eingegebene Zahl wird zu den bisherigen hinzuaddiert und das aktuelle Resultat ausgegeben.

Um das Programm abzubrechen, kann die Benutzerin „q“ (für Quit) eingeben.

Aufgaben I4

Zahlen raten 2: Schreibe ein Programm, bei dem die Benutzer:in eine geheime Zahl zwischen 1 und 100 erraten soll.

Beispiel für die Ein-und Ausgabe:

Rate die geheime Zahl zwischen 1 und 100. Du hast maximal 7 Versuche.  
Versuch 1: 50  
Zu hoch!  
Versuch 2: 25  
Zu niedrig!  
Versuch 3: 37  
Richtig! Du hast die Zahl in 3 Versuchen erraten.

Optional: Gib eine Meldung „Game over.“ aus, wenn alle 7 Veruche falsch waren.

Zusatzaufgaben II

Random

Mit dem Modul random kannst du zufällige Zahlen erzeugen. Hier ein Beispiel:

import random
zahl1 = random.randint(1, 9)
print(zahl1)
  1. Die erste Zeile importiert das Modul random.
  2. In der zweiten Zeile wird zahl 1 auf eine zufällige Zahl zwischen 1 und 9 gesetzt. Bei der Funktion randint() gibst du in der Klammer den Bereich an, aus dem eine zufällige Zahl gewählt wird.
  3. Die dritte Zeile gibt die Zahl aus.

Probiere es aus – führe den Code mehrmals aus!

Aufgabe Z1 – Additions-Quiz 1

Schreibe ein Programm, bei dem die Benutzer:in mehrere Fragen folgender Art beantworten muss: „Was gibt 3 plus 4?“

Aufgabe Z2 – Additions-Quiz 2

Erweitere das Additions-Quiz um folgende Funktionen:

Aufgabe Z3 – Additions-Quiz 3

Erweitere das Additions-Quiz um folgende Funktionen:

Aufgabe Z4 – Rechen-Quiz

Verändere das Additions-Quiz 3 wie folgt:

Lösungen

Achtung: Meist gibt es mehrere Lösungen. Nur weil deine Lösung anders ist als diejenige in den Musterlösungen unten, bedeutet dies nicht, dass deine nicht richtig/gut ist. Sende oder zeige im Zweifelsfall deine Lösung der Lehrperson.

Lösungen G

Lösungen H

Aufgaben I

Aufgaben Z