Les compréhensions de listes sont formidables, mais il existe une autre excellente syntaxe en Python pour gérer les conditions if-else sur une seule ligne. Imaginons que vous souhaitiez attribuer un résultat de Excellent si le score est supérieur ou égal à 50, et Average s'il est inférieur à 50. Cela peut être fait en une seule ligne :
if score >= 50:
result = 'Excellent'
else:
result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'
Les conditions sur une seule ligne sont particulièrement utiles dans les compréhensions de listes. Elles peuvent être utilisées pour générer des éléments de liste de manière conditionnelle — avoir une valeur sous une condition et une autre valeur sous une condition différente. Le même programme de notation peut également être réalisé dans une compréhension de liste :
scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)
Chaque élément dans results sera soit Excellent, soit Average selon la valeur de s.
Notez que cela est différent du filtrage dans une compréhension de liste. Pour le filtrage, la condition if apparaît après la boucle for. Ici, les instructions if et else apparaissent dans la partie de l'élément généré.
Défi
Étant donné une seule ligne de notes d'examen, vous êtes invité à déterminer si chaque étudiant a échoué ou réussi l'examen. Toutes les notes sont séparées par un espace. Les étudiants échouent à l'examen s'ils obtiennent moins de 40, et réussissent sinon.
Les données d'entrée contiennent une seule ligne de notes séparées par un espace.
Le programme doit imprimer une seule ligne où, pour chaque étudiant, il doit afficher FAIL si l'étudiant a échoué, et PASS s'il a réussi l'examen.
Essayez d'implémenter tout le programme sur une seule ligne.