Python 硬币兑换机

Python 硬币兑换机,python,Python,我该怎么写呢 编写一个完整的python程序,允许用户输入0到99之间的数字,表示美分。然后,程序会告诉您需要多少个25美分、10美分、5美分和1美分来更改这个整数。例如,输入为92将输出 这就是我到目前为止所写的,我已经习惯了Java,所以我想我混合了一些Java元素 a=(int(input("amount") int p = 0 int n = 0 int d = 0 int q = 0 if(a % 10 != 5) p = (a % 10) a -= p q

我该怎么写呢

编写一个完整的python程序,允许用户输入0到99之间的数字,表示美分。然后,程序会告诉您需要多少个25美分、10美分、5美分和1美分来更改这个整数。例如,输入为92将输出

这就是我到目前为止所写的,我已经习惯了Java,所以我想我混合了一些Java元素

a=(int(input("amount")

int p = 0
int n = 0
int d = 0
int q = 0

if(a % 10 != 5)   
    p = (a % 10)
    a -= p

q = a / 25       
    a -= q * 25

d = a / 10       
    a -= d * 10

n = a / 5       
    a -= n * 5

print ("Quarters :" + q)
print ("Dimes :" + d)
print ("Nickels :" + n)
print ("Pennies :" + p)

这应计算所需不同类型硬币的数量:

a=int(input("Enter amount: ")) #Ask for amount

q = a // 25 #Calculate number of quarters
a -= q*25 #Subtract value of quarters
d = a // 10 #Calculate number of dimes
a -= d*10 #Subtract value of dimes
n = a // 5 #Calculate number of nickels
a -= n*5 #Subtract value of nickels
p = a #Calculate number of pennies



print ("Quarters :" + str(q))
print ("Dimes :" + str(d))
print ("Nickels :" + str(n)) #Print out numbers of coins
print ("Pennies :" + str(p))

它首先询问金额,然后计算所需的季度数,然后减去每个季度所需的金额

贪婪算法可以很好地解决这个问题(因为硬币的面额)(也就是说,你总是可以取最大的面额,它比到期的总面额少,最后得到一个最优的解决方案)

def get_next(self,change_due):
下一个硬币=最大值(x表示[1,5,10,25]中的x,如果x 0:
更改到期日,下一个硬币=获取下一个(更改到期日)
硬币。追加(下一枚硬币)
印制硬币

同样值得注意的是,如果你有一枚7美分的硬币,这个解决方案将不再为你提供最佳解决方案(但另一个也不会)

我认为您需要返回并查看课本/在线课程/笔记,因为代码中到处都是语法错误。好的,谢谢。我会查看的
def get_next(self,change_due):
    next_coin = max(x for x in [1,5,10,25] if x <= change_due)
    return change_due-next_coin,next_coin

change_due = 99
coins = []
while change_due > 0:
    change_due,next_coin = get_next(change_due)
    coins.append(next_coin)

print coins