====== If: Selektion, Bedingte Ausführung ====== Testen Sie folgendes Programm w = -5 print("Die Wurzel aus %f ist %f" % (w, w**0.5)) Anstatt einfach mit einem Fehler abzubrechen, könnte man vorher überprüfen, ob das Sinn macht: # -*- coding: utf-8 -*- # Das ist ein Kommentar. Die obige Zeile erlaubt es # Umlaute ä, ö, ü in Kommentare zu schreiben. Sonst geht das in TigerJython aber nicht. w = float(raw_input("Zahl = ")) # Testen, ob die Wurzel überhaupt gezogen werden kann if (w>=0): print("Die Wurzel aus %f ist ungefähr %f" % (w, w**0.5)) else: print("Keine Wurzel aus negativen Zahlen, sorry") Beachten Sie folgende Punkte: * raw_input liefert eine Zeichenkette vom Benutzer. Diese muss erst noch mit //float// in eine Zahl umgewandelt werden. * Am **Ende der Zeilen** mit if und else steht ein **Doppelpunkt** * Die Zeilen danach sind **eingrückt**. Es können mehrere eingrückte Zeilen vorkommen. ===== Vergleichsoperatoren ===== * ''=='' (zwei! Gleichheitszeichen) zur Überprüfung der Gleichheit * das einfache Gleichheitszeichen wird für die Zuweisung (miss)gebraucht * ''<'', ''<='', ''>='', ''>'' Kleiner, Kleiner gleich, grösser gleich, grösser * ''!='' ungleich ===== Logische Verknüpfungen in Python ===== * ''and'' (beides, sowohl als auch) * ''or'' (das eine, das andere oder beides) * ''not'' (nicht) * ''!='' (für XOR, wenn das mal jemand braucht) Hinweis: Das ''and'' hat eine höhere Priorität als das ''or'' (wie das * eine höhere Priorität hat als das +). So erhält man ''True'' für den Ausdruck ''True or True and False'' weil zuerst das ''and'' ausgewertet wird. ''(True or True) and False'' ergibt dann aber ''False''. ===== Wahrheitswerte True und False ===== Das Ergebnis eines Vergleichs ist immer True oder False. Man beachte folgenden Code: ok = True # Overkill: (ok==True ergibt einfach wieder True, und der folgende Block im if wird ausgeführt if ok==True: print("Alles ok") # Das reicht if ok: print("Viel schlanker und einfacher zu lesen und schreiben") ===== Aufgaben ===== * Schreiben Sie ein Programm, das die Temperatur vom Benutzer erfragt und dann mindestens drei Bereiche ausgibt, wie z.B. "kalt, warm, heiss". * Schreiben Sie ein Programm, das die quadratische Gleichung $ax^2+bx+c=0$ löst, wenn die Werte für $a$, $b$, $c$ am Programmbeginn gegeben sind. Unterscheiden Sie dazu die Fälle, je nach Anzahl der Lösungen # -*- coding: utf-8 -*- w = int(raw_input("Temperatur = ")) if w<0: print("Es ist kalt!") elif w<10: print("Es ist kuehl!") elif w<18: print("Es ist angenehm kuehl") elif w<25: print("Angenehm warm") else: print("Es ist heiss!") # -*- coding: utf-8 -*- a=2 b=3 c=-3 if a==0: print("Lineare Gleichung. Die Loesung ist x=%f" % (-c/b)) else: # Diskriminante d = b*b-4*a*c if (d<0): print("Keine Loesung, negative Diskriminate") elif d==0: # Achtung, Vergleich mit Dezimalzahlen liefert nicht immer das gewuenschte Ergebnis! print("Diskriminate Null, genau eine Loesung x=%f" % (-b/(2*a))) else: d=d**0.5 x1 = (-b+d)/(2*a) x2 = (-b-d)/(2*a) print("Zwei Loesungen. x1=%f, x2=%f" % (x1,x2)) ====== Quizz ====== True oder False? Achtung: Aufgaben 4 und 5 können **ohne Rechnen** gelöst werden! True|False True|False True|False True|False True|False