単一行の条件
リスト内包表記は非常に便利ですが、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
ループの後に現れますが、ここでは生成される要素の部分にif
とelse
が含まれます。 チャレンジ
一行の試験スコアが与えられたとき、各学生が試験に不合格か合格かを判定してください。スコアはすべてスペースで区切られています。学生は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