我使用以下代码计算Python的最小变化金额:
def change(am):
totalcoins = []
for coin in dstock:
while coin[0] <= am and coin[1] > 0:
totalcoins.append(coin[0])
am = round(am - coin[0], 2)
coin[1] = coin[1] - 1
return totalcoins
dstock是从CSV文件创建的变量。这是dstock的印刷品:
[[1.0, 100], [0.5, 100], [0.2, 100], [0.1, 100], [0.05, 100], [0.02, 100], [0.01, 100]]
解释:[面额,库存水平] - 目前每个都有100个。
我已经想过如何更新库存水平以及如何计算更改,但是如果没有足够的库存来产生更改,我无法弄清楚如何产生错误。
示例:
Stock = [[1.0, 0], [0.5, 0], [0.2, 0], [0.1, 0], [0.05, 0], [0.02, 0], [0.01, 2]]
change = 0.03
如果股票&lt;更改 打印(错误:库存不足以产生变化)
答案 0 :(得分:2)
没有额外的循环。
只有在有足够的变化时,才允许编辑以适应股票更新。
def change(am, dstock):
totalcoins = []
hstock=dstock[:] #make a copy of dstock
for coin in hstock:
while coin[0] <= am and coin[1] > 0:
totalcoins.append(coin[0])
am = round(am - coin[0], 2)
coin[1] = coin[1] - 1
if am>0:
raise ValueError("not enough stock to produce change")
else:
dstock = hstock
return totalcoins
dstock = [[1.0, 0], [0.5, 0], [0.2, 0], [0.1, 0], [0.05, 0], [0.02, 0], [0.01, 3]]
print change(0.03, dstock) #[0.01, 0.01, 0.01]
print dstock #[[1.0, 0], [0.5, 0], [0.2, 0], [0.1, 0], [0.05, 0], [0.02, 0], [0.01, 0]]
答案 1 :(得分:1)
你的问题很模糊,但我认为你问的是如何产生错误。如果没有,请详细说明
使用例外和条件:
if stock < stock_required_for_change:
raise Exception("Not enough Stock to produce change")