====== 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