Python分级词典

2024-09-30 16:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python字典,其等级范围如下所示:

grade_boundaries = {
    'A': [70, 100],
    'B': [60, 69],
    'C': [50, 59],
    'D': [40, 49],
    'E': [30, 39],
    'F': [0, 29],
}

我对Python相当陌生,我想知道如何阅读这本字典,以便在比较输入数字时提取每个年级的下边界和上边界。当键只有一个值时,我可以处理dictionary,但在这种情况下,我不确定如何编写代码。在


Tags: 代码dictionary字典情况数字边界gradeboundaries
3条回答

您可以使用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
if value >= grade_boundaries['A'][0] and value <= grade_boundaries['A'][1]:
    print("value is in grade A")

如果您愿意,也可以同时提取两个边界:

^{pr2}$

如果要同时比较:

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')

相关问题 更多 >