As compreensões de listas são ótimas, mas existe outra sintaxe disponível no Python para lidar com condições if-else em uma única linha. Imagine que você queira atribuir o resultado Excellent se a pontuação for maior ou igual a 50, e Average se for menor que 50. Isso pode ser feito em uma única linha:
if score >= 50:
result = 'Excellent'
else:
result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'
As condições em uma linha são especialmente úteis em compreensões de listas. Elas podem ser usadas para gerar elementos de lista condicionalmente — ter um valor sob uma condição e outro sob uma condição diferente. O mesmo programa de pontuação pode ser feito em uma compreensão de lista também:
scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)
Cada elemento em results será Excellent ou Average dependendo do valor de s.
Observe que isso é diferente de filtrar em uma compreensão de lista. Para filtrar, a condição if aparece após o loop for. Aqui, as declarações if e else aparecem na parte do elemento gerado.
Desafio
Dada uma única linha de notas de exame, você deve determinar se o aluno foi reprovado ou passou no exame. Todas as notas são separadas por um espaço. Os estudantes são reprovados no exame se obtiverem menos de 40, e passam caso contrário.
A entrada contém uma única linha de notas separadas por um espaço.
O programa deve imprimir uma única linha onde, para cada aluno, deve imprimir FAIL se o aluno foi reprovado e PASS se passou no exame.
Tente implementar todo o programa em uma única linha.