改变参考值时保持相同的退化步骤

Keeping the same step of degradation when changing the reference value

我正在编写这段代码,它通过一个循环遍历值列表,并寻找与参考值相比超过 5% 的变化(我称之为退化)。如果“退化”超过 5%,该参考值将发生变化,并将转移到下一个值。

问题:

我想要什么:

randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 5
ref = randomlist[0]
for i in randomlist:
    if (1 - (i / ref)) * 100 > Degradation:
        ref = i
        continue

我的代码没有考虑到这一点。

如果我没理解错的话,你所做的是减少当前值的 5%。

你应该做的是减少一个常数值或初始值的百分比。 所以每次循环都是-0.05。

randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 10
five_percent_Degradation = Degradation * 0.05
ref = randomlist[0]
for i in randomlist:
    if (1 - (i / ref)) * 100 > Degradation:
        ref = i
        Degradation -= five_percent_Degradation
        print(Degradation)

我设法找到了解决方案:

randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 10
ref = randomlist[0]
for i in randomlist:
    if round((ref - i) * 100) >= Degradation:
        ref = i
        continue