示例if-elif-else代码:
if scr >= 0.9: print('A') elif scr >= 0.8: print('B') elif scr >= 0.7: print('C') elif scr >= 0.6: print('D') else: print('F')
或者
def convertgrade(scr, numgrd, ltrgrd): if scr >= numgrd: return ltrgrd if scr < numgrd: return ltrgrd
convertgrade(scr, 0.9, 'A') convertgrade(scr, 0.8, 'B') convertgrade(scr, 0.7, 'C') convertgrade(scr, 0.6, 'D') convertgrade(scr, 0.6, 'F')
1、使用bisect实现
相关文档:bisect
from bisect import bisect
def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):
i = bisect(breakpoints, score)
return grades[i]
>>> [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
['F', 'A', 'C', 'C', 'B', 'A', 'A']
相关文档:
def grade(score): grades = zip('ABCD', (.9, .8, .7, .6)) return next((grade for grade, limit in grades if score >= limit), 'F') >>> grade(1) 'A' >>> grade(0.85) 'B' >>> grade(0.55) 'F'
3、使用字典(dict)实现
grades = {"A": 0.9, "B": 0.8, "C": 0.7, "D": 0.6, "E": 0.5} def convert_grade(scr): for ltrgrd, numgrd in grades.items(): if scr >= numgrd: return ltrgrd return "F"
4、使用numpy的np.select
>> x = np.array([0.9,0.8,0.7,0.6,0.5]) >> conditions = [ x >= 0.9, x >= 0.8, x >= 0.7, x >= 0.6] >> choices = ['A','B','C','D'] >> np.select(conditions, choices, default='F') >> array(['A', 'B', 'C', 'D', 'F'], dtype='<U1')
相关文档:np.select