Python计算出差异为0

时间:2015-04-20 16:29:36

标签: python

用户一天只能获得100分。如果用户获得超过100分,我只希望delta的值为例如......

  

如果用户有100(current_rep)并且添加10,那么我想要delta = 0

     

如果用户有90(current_rep)并且添加20,那么我想要delta = 10

这是我到目前为止所做的:

REPUTATION_MAX_GAIN_PER_DAY = 100
current_rep = self.model.objects.calculate_points_for_today(user)
expected_rep = reputation_value + current_rep

if expected_rep > REPUTATION_MAX_GAIN_PER_DAY:
   delta = REPUTATION_MAX_GAIN_PER_DAY - current_rep

但上面给出的delta是 - 而不是允许的点数。

2 个答案:

答案 0 :(得分:3)

通过更改条件可以使其工作,但为了使其更具可读性,请使用内置的min

REPUTATION_MAX_GAIN_PER_DAY = 100
current_rep = self.model.objects.calculate_points_for_today(user)
expected_rep = min(reputation_value + current_rep, REPUTATION_MAX_GAIN_PER_DAY )
delta = expected_rep - current_rep

为了完整起见,这里是适合你的条件陈述

if expected_rep > REPUTATION_MAX_GAIN_PER_DAY:
   expected_rep = REPUTATION_MAX_GAIN_PER_DAY
delta = expected_rep - current_rep

答案 1 :(得分:0)

你的if条件是倒退。

我认为你的意思是:

if expected_rep <= REPUTATION_MAX_GAIN_PER_DAY:
   delta = REPUTATION_MAX_GAIN_PER_DAY - current_rep