设计任意主题的两个类,要求:这两个类具有继承的关系,两个类都具有公有和私有类型的属性与方法。最后建立对象并实现方法调用,调用中能总结或探索出python对象调用语法的一些知识或规律。
def dpMakeChange(coinValueList, change, minCoins, coinsUsed):
# 从1分开始到change逐个计算最好硬币数
for cents in range(1, change+1):
# 1. 初始化一个最大值
coinCount = cents
# 初始化一下新加硬币
newCoin = 1
# 2. 减去每个硬币,向后查最少硬币数,同时记录总的最少数
for j in [c for c in coinValueList if c <= cents]:
if minCoins[cents-j] + 1 < coinCount:
coinCount = minCoins[cents - j] + 1
newCoin = j
# 3. 得到当前最少硬币数,记录到表中
minCoins[cents] = coinCount
# 记录本步骤加的1个硬币
coinsUsed[cents] = newCoin
# 返回最后一个结果
return minCoins[change]
def printCoins(coinsUsed, change):
coin = change
while coin > 0:
thisCoin = coinsUsed[coin]
print(thisCoin)
coin = coin - thisCoin
amnt = 63
clist = [1, 5, 10, 21, 25]
coinsUsed = [0] * (amnt + 1)
coinsCount = [0] * (amnt + 1)
print("Making change for", amnt, "requires")
print(dpMakeChange(clist, amnt, coinsCount, coinsUsed), "coins")
print("They are:")
printCoins(coinsUsed, amnt)
print("The used list is as follows:")
print(coinsUsed)