Zum if-Ausdruck in Python
Trägheit
Ein if-Ausdruck wertet entweder den ersten oder den letzten Operanden aus, aber nicht beide.
Alle anderen bisher vorgestellten Operatoren werteten immer alle ihre Operanden aus.
- Protokoll
print( 'ja' )== print( 'nein' )
ja
nein
True
- Protokoll
print( 'ja' )if True else print( 'nein' )
ja
- Protokoll
print( 'ja' )if False else print( 'nein' )
nein
Ein Operandenstelle eines Operators ist strikt, wenn ihr Operator immer ausgewertet wird, sonst wird sie träge (faul) genannt.
Die obigen Beispiele dienten nur zur Veranschaulichung der Trägheit (Faulheit). Normalerweise würde man kürzer schreiben:
- Protokoll
print( 'ja' if True else 'nein' )
ja
- Protokoll
print( 'ja' if False else 'nein' )
nein
Auswertung von Operatorausdrücken
Hier sieht man Beispiele mit Operatorausdrücken als Bedingung.
- Protokoll
print( 'A' if 2 + 5 else 'B' )
A
- Protokoll
print( 'A' if 2 < 5 else 'B' )
A
Auswertung von Laufzeitwerten
Dieses Programm liest eine Temperatur ein und gibt »zu kalt« aus, wenn sie nicht über 18 liegt.
- Protokoll
print( 'ok' if int( input( 'Temperatur? ' ))>18 else 'zu kalt!' )
Temperatur? 20
ok
Dieses Programm implementiert ein einfaches Glücksspiel mit einer Gewinnwahrscheinlichkeit von zehn Prozent.
- Protokoll
from random import random
print( ( 'Gewonnen' if random() > 0.9 else 'Verloren' )+ '!' )
Verloren!
Hier erscheint der Ausdruck »'Gewonnen'« zuerst, weil der Autor zuerst daran gedacht hatte, obwohl es eigentlich viel häufiger vorkommt, daß sich »'Verloren'« als Wert des if-Ausdrucks ergibt.
Die Lösung mit »choices« ist besser, weil sie die Absichten des Autors expliziterter zum Ausdruck bringt, etwa durch die Verwendung der Wörters “choices ” und “weights ”.
- Protokoll
from random import choices
print( choices(( 'Gewonnen!', 'Verloren!' ), weights=( 1, 9 )))
Verloren!
Übungsaufgaben
/ Übungsaufgabe
Schreiben Sie ein Skript, bei dessen Ausführung eine Temperatur eingelesen und »ok« ausgegeben wird, wenn die Temperatur unter 25 liegt, und sonst »zu heiss!« (an Stelle des Doppel-S darf auch ein Eszett verwendet werden.).
/ Übungsaufgabe ⃗
Schreiben Sie eine Anweisung, bei deren Ausführung mit fünfzigprozentiger Wahrscheinlichkeit »Kopf« ausgegeben wird, und sonst »Zahl«.
/ Übungsaufgabe *
Falls ein Wort aus der linken Spalte eingegeben wird, soll das Wort ausgegeben werden, das sich in derselben Zeile in der rechten Spalte befindet.
- Tabelle der Eingaben und Ausgaben
Tisch table
Haus house
Sonne sun
Erde earth
Dieses Programm soll verschachtelte if-Ausdrücke verwenden, um Eingaben aus der linken Spalte zu erkennen und dann gegebenenfalls das entsprechende Wort aus der rechten Spalte festzulegen, so daß keine weiteren Vergleiche ausgewertet werden, wenn das Wort bereits gefunden wurde.
Poll *
Pep 308