如何删除字典中的最小值但更改最大总和?

时间:2015-12-13 01:14:45

标签: python dictionary

我有一本字典,里面有hw,qz,考试和项目的分数。我必须创建一个函数来计算包含成绩的字典的总成绩。我的问题是我们必须降低最低测验等级。我知道如何删除“qz”中的最低值。关键,但如果我这样做,它仍然会被测验的总点数除以。我的问题是如何降低最低测验分数,以便更改测验值的总分数。

Grades = {'hw':[16,27,25], 'qz':[8,10,5], 'ex':[83,93], 'pr':[18,15]}

def Grade_Calculation():    
    One = sum(Grades['hw'])/90 * .25
    Two = sum(Grades['qz'])/30 * .25
    Three = sum(Grades['ex'])/200 * .25
    Four = sum(Grades['pr'])/40 * .25     
    Final_Grade=(One + Two + Three + Four)
    return Final_Grade

2 个答案:

答案 0 :(得分:0)

你可以删除它:

Grades['qz'].remove(min(Grades['qz']))

或者你可以在计算中不使用它:

sum(sorted(Grades['qz'])[1:])

答案 1 :(得分:0)

当你使用硬编码值并且总是需要丢弃其中一个分数时,为什么不将它除以20而不是30?

Grades = {'hw':[16,27,25], 'qz':[8,10,5], 'ex':[83,93], 'pr':[18,15]}

def Grade_Calculation():    
    One = sum(Grades['hw'])/ (3 * 30)
    Two = sum(sorted(Grades['qz'])[1:])/ ((3 - 1) * 10)
    Three = sum(Grades['ex'])/ (2 * 100)
    Four = sum(Grades['pr'])/ (2 * 20)
    Final_Grade=(One + Two + Three + Four) * .25
    return Final_Grade

如果测验中可以得到的分数变化会变得更复杂,那么你需要有一些列表,其中包含每个测验中可实现的分数。