Las comprensiones de listas son geniales, pero hay otra sintaxis muy útil disponible en Python para manejar condiciones if-else en una sola línea. Imagina que quieres asignar un resultado de Excellent si la puntuación es mayor o igual a 50, y Average si es menor que 50. Esto se puede hacer en una sola línea:
if score >= 50:
result = 'Excellent'
else:
result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'
Las condiciones en una sola línea son especialmente útiles en las comprensiones de listas. Se pueden usar para generar elementos de la lista condicionalmente: obtener un valor bajo una condición y otro bajo una condición diferente. El mismo programa de puntuación se puede hacer también en una comprensión de listas:
scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)
Cada elemento en results será Excellent o Average dependiendo del valor de s.
Nota que esto es diferente de filtrar en una comprensión de listas. Para filtrar, la condición if aparece después del bucle for. Aquí, las declaraciones if y else aparecen en la parte del elemento generado.
Desafío
Dada una sola línea de puntuaciones de exámenes, se te pide determinar si el estudiante ha suspendido o aprobado el examen. Todas las puntuaciones están separadas por un espacio. Los estudiantes suspenden el examen si obtienen menos de 40, y aprueban de lo contrario.
La entrada contiene una sola línea de puntuaciones separadas por un espacio.
El programa debe imprimir una sola línea donde para cada estudiante imprima FAIL si el estudiante suspendió, y PASS si aprobó el examen.
Intenta implementar todo el programa en una sola línea.