[求教!!]怎么用python编写一个找零钱的程序??
发布网友
发布时间:2022-05-01 05:51
我来回答
共4个回答
热心网友
时间:2022-04-18 23:36
这个题目很有意思,外国教材中的作业题目都很精彩。
因为它没有*零钱的数量,所以只需要按从大到小的顺序找钱就可以了。 这是一个取整运算。
给你讲一个原理,你自己完成细节。
假设商品价格是Y, 客户给钱数是Z, 那么Z-Y的余数就是要找的零钱。
Z-Y的数量依次被50,20,10,5纸币来除,如果还有小数,除不尽,那么继续使用2,1,0.25等等的硬币去除。最终应该刚好除尽。 为了防止浮点运算误差。可以一开始就将Z和Y乘以100,再转换成整数。这样就没有问题了。
求余使用的运算符是%,百分号。 你需要将50,20,10.。。2,1,0.25.。。等等放到一个数组里,依次除,如果余数为0,则break。追问你说的计算公式我是知道的,因为之前写过一个Algorithms.
但是不知道要怎么用python表示出来,在网上看了一下教程但是完全不会做......
热心网友
时间:2022-04-19 00:54
楼上完美解答,我还不是特别熟练,闲来无事,码上:
# coding:utf8
def zhaoqian(money,list_zy):
for zy in list_zy:
value_zy = money % zy
count_zy = int(money / zy)
if value_zy >= 0 and count_zy != 0:
hj.append('$'+str(zy)+' * '+str(count_zy))
money = value_zy
record.append(money)
if money == 0:
return
return
if __name__ == '__main__':
zb = [50,20,10,5]#纸币
yb = [2,1,0.25,0.1,0.05,0.01]#硬币
hj = []#合计
record = []#记录找零不够的金额
ys = 2.5 #应收多少
ss = 100#实际收了
zl = ss - ys#该找多少
if zl < 0 :
print '还差: $%s' % abs(zl)
elif zl == 0:
print '正好,欢迎下次光临!'
else:
print '找零: $%s' % zl
zhaoqian(zl,zb)
zhaoqian(record[-1],yb)
print hj
找零: $97.5
['$50 * 1', '$20 * 2', '$5 * 1', '$2 * 1', '$0.25 * 2']
热心网友
时间:2022-04-19 02:28
用数组解决