lehrkraefte:snr:informatik:python:if-then

if-Selektion

Oft sollen gewisse Programmteile nur unter gewissen Bedingungen ausgeführt werden. Das geht in Python durch if-Selektion.

Das folgende Programm illustriert die zwei häufigsten Verwendungen der if-(-else)-Selektion.

t = inputInt("Gib eine ganze Zahl!")
 
if t >= 100:
    print("Die eingegebene Zahl ist grösser-gleich 100.")
 
if t < 0:
    print("Die eingegebene Zahl ist negativ.")
else:
    print("Die eingegebene Zahl ist nicht-negativ.")

if-Selektion: Der eingerückte Code-Block (der auch aus mehreren Zeilen bestehen kann) nach der if-Zeile wird ausgeführt, falls die Bedingung zwischen if und : wahr ist (wenn man die aktuellen Werte der Variablen einsetzt). Wer mag, kann den Doppelpunkt : als then lesen.

if-else-Selektion: Der eingerückte Code-Block nach der if-Zeile wird ausgeführt, falls die angegebene Bedingung wahr ist, sonst wird der eingerückte Code-Block nach der Zeile else: ausgeführt.

Einrückungen und Doppelpunkte sind wichtig! Wie bei Schleifen sind sie eine beliebte Fehlerquelle!

if-Selektionen können verschachtelt werden:

t = inputInt("Wie viele Minuten Tageslicht hattest Du heute bereits?")
 
if t >= 120:
    print("Gut, deine Augen werden es dir langfristig danken.")
else:
    if t < 0:
        print("Das kommt mir etwas kurz vor!")
    else:
        print("Versuche bitte im eigenen Interesse, noch mindestens %d Minuten Tageslicht abzubekommen." % (120-t))

Quelle: Zwei Stunden Tageslicht pro Tag minimieren laut wissenschaftlicher Studien das Risiko, kurzsichtig zu werden, siehe Immer mehr Kinder werden kurzsichtig.

Hier bietet Python auch die Möglichkeit, else: if zu dem Code-Kunstwort elif zu verschmelzen: Das folgene Programm leistet dasselbe und ist etwas leichter lesbar - es werden weniger Einrückungen benötigt.

t = inputInt("Wie viele Minuten Tageslicht hattest Du heute bereits?")
 
if t >= 120:
    print("Gut, deine Augen werden es dir langfristig danken.")
elif t < 0:
    print("Das kommt mir etwas kurz vor!")
else:
    print("Versuche bitte im eigenen Interesse, noch mindestens %d Minuten Tageslicht abzubekommen." % (120-t))

Hier sind auch längere Fallunterscheidungen per if-elif-elif-…-elif-else möglich (wobei das else am Ende immer optional ist).

Schreibe ein Programm, das vom Benutzer eine Temperaturangabe einliest und dann mitteilt, ob es kalt oder kühl oder behaglich oder warm oder heiss ist.

Schreibe ein Programm, dass vom Benutzer zwei Zahlen $a$ und $b$ einliest. Zuerst soll ausgegeben werden, wie viele Lösungen die (lineare) Gleichung $aX+b=0$ hat. Danach sollen alle Lösungen angegeben werden.

Alle Spezialfälle sind zu behandeln (denke an $0X+1=0$ und $0X+0=0$).

Aufgabe, falls die Lösungsformel für quadratische Gleichungen bekannt ist (Mitternachtsformel, $p$-$q$-Formel):

Aufgabe, falls die Lösungsformel für quadratische Gleichungen bekannt ist (Mitternachtsformel, $p$-$q$-Formel):

Schreibe das entsprechende Programm für quadratische Gleichungen $aX^2+bX+c$.

Auch hier sind alle Spezialfälle zu behandeln (etwa $a=0$; $a\not=0$, Diskriminante negativ; etc.)!

Statt die Werte vom Benutzer einzulesen, kannst Du das folgende Programmfragment ausbauen:

a = 4
b = 2
c = -3
print("Gleichung %.2fX^2%+.2fX%+.2f = 0" % (a,b,c))  
# Erklärung: %+f fügt auf jeden Fall ein Vorzeichen hinzu (+ oder -).

2aLM bis hier 22.09.2021

Schreibe ein Programm, dass alle Teiler einer (am Anfang des Programms definierten) Zahl ausgibt! Ausserdem soll am Ende ausgegeben werden, wie viele Teiler diese Zahl hat.

Erinnerung: 45 % 7 liefert den Rest bei der Division von 45 durch 7

Schreibe ein Programm, dass alle Primzahlen von 1 bis zu einer gegebenen Zahl (etwa n = 100) ausgibt.

Hinweis: Hier führt wohl kein Weg an einer verschachtelten for-Schleife vorbei.

Um alle Primzahlen übersichtlich in einer Zeile auszugeben: Baue in der for-Schleife einen String auf, der am Ende ausgegeben wird.

Wer noch Lust auf mehr Mathematik hat

Wer noch Lust auf mehr Mathematik hat

Gib die Primzahlen nun zeilenweise aus und schreibe bei jeder Primzahl zwei Informationen hinzu:

  • Welchen Rest hat sie bei Division durch 4.
  • Ist sie als Summe zweier Quadratzahlen darstellbar? Wenn ja, gib eine solche Darstellung an.

Die Ausgabe könnte wie folgt aussehen:

...
29 | Rest 1 | ja: 29 = 25 + 4
31 | Rest 3 | nein
...

Fällt dir etwas auf?

Wenn ja, hast du vermutlich den hier versteckten Satz empirisch entdeckt:

Wenn ja, hast du vermutlich den hier versteckten Satz empirisch entdeckt:

2aLM und 2dNP bis hier am 29.09.2021, manche an obiger Primzahlliste, andere schon bei Listen oder Modifikation von Listen…

  • lehrkraefte/snr/informatik/python/if-then.txt
  • Last modified: 2021/09/29 14:34
  • by Olaf Schnürer