到目前为止,代码正在运作。
这是我带有测试用例的代码
def change(target, coins):
result = dict()
i= len(coins) -1
while i> 0:
coin = coins[i]
numOfThisCoin= target // coin
result[coin] = numOfThisCoin
target -= coin * numOfThisCoin
i-= 1
return result
print(change(185, (5, 10, 25, 100, 200)))
我正在获得输出
{200: 0, 100: 1, 25: 3, 10: 1}
但希望它像
{5: 0, 10: 1, 25: 3, 100: 1, 200: 0}
答案 0 :(得分:0)
以下是您问题的更正代码:
from collections import OrderedDict
def change(target, coins):
result = dict()
i= len(coins) -1
while i>= 0:
coin = coins[i]
numOfThisCoin= target // coin
result[coin] = numOfThisCoin
target -= coin * numOfThisCoin
i-= 1
res = OrderedDict(sorted(result.items()))
return res
print(change(185, (5, 10, 25, 100, 200)))
如果你(你不仅可以获得25个硬币面额)
print(res[25])
输出
3
在这种情况下。
dict
- 它不会保持元素的顺序。您必须使用OrderedDict按所需顺序对元素进行排序。有关详细信息,请访问以下链接:
http://docs.python.org/library/collections.html#collections.OrderedDict
答案 1 :(得分:0)
def change(target, coins):
result = dict()
i= len(coins) -1
while i>= 0:
coin = coins[i]
numOfThisCoin= target // coin
result[coin] = numOfThisCoin
target -= coin * numOfThisCoin
i-= 1
return dict(sorted(result.items()))
print(change(185, (5, 10, 25, 100, 200)))