Одна «проблема» с некоторыми другими ответами состоит в том, что она пройдет l oop через range
объект, что приведет к большему количеству вычислений, чем необходимо. Вы можете использовать распаковку кортежей и перебирать список. Есть также удобная функция, где вы можете делать такие вещи, как 0 < x < 1
, чтобы сделать сравнения в одном кадре.
def convert_score_to_grade_w_plus_and_minus(score):
grade_ranges = [
(98, 101, 'A+'), (93, 98, 'A'), (90, 93, 'A-'),
(88, 90, 'B+'), (83, 88, 'B'), (80, 83, 'B-'),
(78, 80, 'C+'), (73, 78, 'C'), (70, 73, 'C-'),
(68, 70, 'D+'), (63, 68, 'D'), (60, 63, 'D-'),
(0, 60, 'F'),
]
for lower, upper, grade in grade_ranges:
if lower <= score <= upper:
return grade
return "Invalid Score"
for score in [70, 34, 99, 102]:
print(score, convert_score_to_grade_w_plus_and_minus(score))
# (70, 'C-')
# (34, 'F')
# (99, 'A+')
# (102, 'Invalid Score')