从数字中减去,直到它不等于零



我有一个数字列表[5,10,15,20],我有一些"折扣"值,假设是20。我想做的是从每个数字中减去这个折扣值,直到折扣等于0(20-5=15,15-10=5,然后15-5=10(。我试过这样的东西:

for i in list: 
while i[0] > 0: 
i[0] - discount 
if discount != 0: 
continue 
else: 
break

但它似乎对没有任何影响

老实说,我不明白你在代码中做了什么。尽量不要将列表用作变量,因为它是一个关键字。如果我正确理解你的问题,下面的代码会检查折扣是否为0。如果是,那么它就会脱离循环。如果折扣值大于0,则从折扣值中减去下一个列表项。我做了折扣<=0以防止在折扣值变为负值的情况下出现无限值。您的代码中存在另一个问题。你做i[0],其中i是你列表中的一个整数值,这没有任何意义。

for i in my_list:
if discount<=0:
break
else:
discount -= i

这可能是问题的解决方案

for i in my_list:
while discount> 0:
x = max(0,i-discount)
discount = (abs(min(0,i-discount)))
new_list.append(x)
break
else:
new_list.append(i)

最新更新