単一行の条件

リスト内包表記は非常に便利ですが、Pythonには他にも、if-else 条件を一行で処理するための優れた構文があります。たとえば、スコアが50以上ならExcellentを、50未満ならAverageを結果として割り当てたいとします。これは一行で実現できます:

if score >= 50:
    result = 'Excellent'
else:
    result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'

単一行の条件は、特にリスト内包表記で役立ちます。条件に応じてリストの要素を生成するために使用でき、一つの条件ではある値を、別の条件では別の値を持たせることができます。同じ採点プログラムをリスト内包表記で次のように実装できます:

scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)

resultsの各要素は、sの値に応じてExcellentまたはAverageになります。

これはリスト内包表記でのフィルタリングとは異なることに注意してください。フィルタリングでは、if条件はforループの後に現れますが、ここでは生成される要素の部分にifelseが含まれます。

チャレンジ

一行の試験スコアが与えられたとき、各学生が試験に不合格か合格かを判定してください。スコアはすべてスペースで区切られています。学生は40未満のスコアで不合格となり、それ以外の場合は合格となります。

入力はスペースで区切られた一行のスコアです。

プログラムは各学生について、不合格ならFAIL、合格ならPASSを一行で出力してください。

プログラム全体を一行で実装してみてください。

入力

出力

30 80 90 34 66 100

FAIL PASS PASS FAIL PASS PASS

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue