Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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]] lehrkraefte/snr/informatik/python/if-then.txt Last modified: 2021/09/29 14:34by Olaf Schnürer