lehrkraefte:snr:informatik:python:if-then

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:snr:informatik:python:if-then [2021/09/13 16:55] Olaf Schnürerlehrkraefte:snr:informatik:python:if-then [2021/09/29 12:34] (current) – [Aufgaben zu for-Schleifen und if-Selektion] Olaf Schnürer
Line 1: Line 1:
 +====== if-Selektion ======
 +
 +Oft sollen gewisse Programmteile nur unter gewissen Bedingungen ausgeführt werden. 
 +Das geht in Python durch ''if''-Selektion.
 +
 +<WRAP round todo>
 +Das folgende Programm illustriert die zwei häufigsten Verwendungen der ''if-(-else)''-Selektion.
 +
 +<code python>
 +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.")
 +</code>
 +</WRAP>
 +
 +<WRAP round info>
 +''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!
 +
 +</WRAP>
 +
 +<WRAP round info>
 +''if''-Selektionen können verschachtelt werden:
 +<code python>
 +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))
 +</code>
 +Quelle: Zwei Stunden Tageslicht pro Tag minimieren laut wissenschaftlicher Studien das Risiko, kurzsichtig zu werden, siehe [[https://www.deutschlandfunkkultur.de/sehstoerung-des-auges-immer-mehr-kinder-werden-kurzsichtig.976.de.html?dram:article_id=499263|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.
 +<code python>
 +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))
 +</code>
 +Hier sind auch längere Fallunterscheidungen per ''if''-''elif''-''elif''-...-''elif''-''else'' möglich (wobei das ''else'' am Ende immer optional ist).
 +</WRAP>
 +
 +<WRAP round todo>
 +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.
 +</WRAP>
 +
 +===== Aufgaben zur if-Selektion =====
 +
 +<WRAP round todo>
 +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$).
 +</WRAP>
 +
 +<hidden Aufgabe, falls die Lösungsformel für quadratische Gleichungen bekannt ist (Mitternachtsformel, $p$-$q$-Formel):>
 +<WRAP round todo>
 +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:
 +<code python>
 +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 -).
 +</code>
 +</WRAP>
 +</hidden>
 +
 +2aLM bis hier 22.09.2021
 +
 +===== Aufgaben zu for-Schleifen und if-Selektion =====
 +
 +<WRAP round todo>
 +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 
 +</WRAP>
 +
 +<WRAP round todo>
 +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.
 +
 +<hidden 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:
 +<code text>
 +...
 +29 | Rest 1 | ja: 29 = 25 + 4
 +31 | Rest 3 | nein
 +...
 +</code>
 +Fällt dir etwas auf?
 +<hidden Wenn ja, hast du vermutlich den hier versteckten Satz empirisch entdeckt:>
 +[[https://de.wikipedia.org/wiki/Zwei-Quadrate-Satz|Zwei-Quadrate-Satz]]
 +</hidden>
 +</hidden>
 +</WRAP>
 +2aLM und 2dNP bis hier am 29.09.2021, manche an obiger Primzahlliste, andere schon bei Listen oder Modifikation von Listen... 
 +
 +
 +===== Link zur Kursseite =====
 +
 +[[lehrkraefte:snr:informatik:glf21|Zur Kursseite]]