用户一天只能获得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是 - 而不是允许的点数。
答案 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