lehrkraefte:blc:informatik:ffprg1-2020:ifelse

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.
  • == (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
  • 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.

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")
  • 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

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 % - /
  • lehrkraefte/blc/informatik/ffprg1-2020/ifelse.txt
  • Last modified: 2022/02/24 12:33
  • by Ivo Blöchliger