我正在處理這段代碼,它通過一個回圈遍歷值串列,并從參考值中尋找超過 5% 的變化(我稱之為退化)。如果“退化”超過 5%,該參考值將發生變化,并將轉移到下一個值。
問題:
當我們從 1 到 0.95 時,它下降了 5%(因為 1 的 5% 是 0.05,差異是 1 - 0.05 = 0.95)所以這很好。
但是當我們移動到 ref = 0.95 時,5% 的降級將是 0.0475,即 0.95 - 0.0475 = 0.9025 而不是 0.9(數學邏輯,但不是我想要的)。
我想要什么:
- 我希望代碼在降級超過 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 = 5
ref = randomlist[0]
for i in randomlist:
if (1 - (i / ref)) * 100 > Degradation:
ref = i
continue
我的代碼沒有考慮到這一點。
uj5u.com熱心網友回復:
如果我理解正確,您所做的是減少當前值的 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)
uj5u.com熱心網友回復:
我設法找到了解決方案:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482204.html
