python多个if优化_Python 考试学分判断中if-elif重复代码减少优化简化方法

示例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实现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']

2、使用next和zip实现

相关文档: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='

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值