Table of Contents

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:

Vergleichsoperatoren

Logische Verknüpfungen in Python

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

Lösungsvorschläge

Lösungsvorschläge

temperatur.py
# -*- 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!")
quadratisch.py
# -*- 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!

2>3
7>9 or 9>7
not(True and (False or True))
234*345<321*251 and False
234*345<321*251 or True
You Scored % - /