У меня есть словарь Python с рангами, как показано ниже:
grade_boundaries = {
'A': [70, 100],
'B': [60, 69],
'C': [50, 59],
'D': [40, 49],
'E': [30, 39],
'F': [0, 29],
}
Я довольно новичок в Python и мне было интересно, как я могу прочитать этот словарь, чтобы я мог извлечь нижнюю границу, а также верхнюю границу для каждого класса при сравнении входного числа. Я могу обрабатывать словарь, когда для ключа есть единственное значение, но в этом сценарии я не уверен, как написать код.
3 ответа
if value >= grade_boundaries['A'][0] and value <= grade_boundaries['A'][1]:
print("value is in grade A")
При желании вы можете извлечь обе границы одновременно:
(lower_bound, upper_bound) = grade_boundaries['A']
Если вы хотите сравнить все сразу:
for grade in grade_boundaries:
if value >= grade_boundaries[grade][0] and value <= grade_boundaries[grade][1]:
print("value is in grade " + grade)
Похоже, вы хотите получить буквенную оценку из числа? Если это так, это должно сработать:
GRADE_BOUNDARIES = {
'A': [70, 100],
'B': [60, 69],
'C': [50, 59],
'D': [40, 49],
'E': [30, 39],
'F': [0, 29],
}
def get_grade(number_grade):
for letter, bounds in GRADE_BOUNDARIES.items():
if number_grade >= bounds[0] and number_grade <= bounds[1]:
return letter
raise ValueError('Invalid number grade')
Вы можете использовать метод bisect()
из модуля bisect
:
from bisect import bisect
grades='FEDCBA' #or you can use 'ABCDEF'[::-1]
score = 62
grades[bisect([30, 40, 50, 60, 70], score)]
#B
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.