List Comprehensions sind großartig, aber es gibt noch eine weitere tolle Syntax in Python, um if-else-Bedingungen in einer einzigen Zeile zu handhaben. Stell dir vor, du möchtest ein Ergebnis von Excellent zuweisen, wenn der Score größer oder gleich 50 ist, und Average, wenn er unter 50 liegt. Dies kann in einer einzigen Zeile erledigt werden:
if score >= 50:
result = 'Excellent'
else:
result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'
Die einzeiligen Bedingungen sind besonders nützlich in List Comprehensions. Sie können verwendet werden, um Listenelemente bedingt zu generieren – einen Wert unter einer Bedingung und einen anderen unter einer anderen Bedingung. Dasselbe Bewertungsprogramm kann ebenfalls in einer List Comprehension umgesetzt werden:
scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)
Jedes Element in results wird entweder Excellent oder Average sein, abhängig vom Wert von s.
Beachte, dass dies anders ist als das Filtern in einer List Comprehension. Beim Filtern erscheint die if-Bedingung nach der for-Schleife. Hier erscheinen die if- und else-Anweisungen im Teil des generierten Elements.
Herausforderung
Bei einer einzelnen Zeile von Prüfungsergebnissen sollst du angeben, ob der Schüler die Prüfung nicht bestanden hat oder bestanden hat. Alle Ergebnisse sind durch ein Leerzeichen getrennt. Schüler fallen durch die Prüfung, wenn sie weniger als 40 Punkte erzielen, und bestehen ansonsten.
Die Eingabe enthält eine einzelne Zeile von Ergebnissen, getrennt durch ein Leerzeichen.
Das Programm soll eine einzelne Zeile ausgeben, in der für jeden Schüler FAIL ausgegeben wird, wenn er durchgefallen ist, und PASS, wenn er die Prüfung bestanden hat.
Versuche, das gesamte Programm in einer einzigen Zeile zu implementieren.