单位发工资。在控制台输入某职工应发的工资后(包含两位小数),试求各种票额的钞票总张数最少的付款方案 (包含五角、两角和一角的纸币,分位四舍五入进位至一角钱)。 方法一 # 求各种票额的钞票总张数最少的付款方案 # 用时10min print("请输入某职工应发的工资后(包含两位小数)") s=float(input()) s= round(s, 1) zheng=int(s//1) ling=int(s*10%10) print("职工实发的工资",zheng,"元",ling,"角") l=[100,50,20,10,5,1] d=[0,0,0,0,0,0] outstr1='' for i in range(0,6): d[i]=int(s/l[i]) if d[i]>0: outstr1+=str(l[i]) + "元:" + str(d[i])+"张 " s-=d[i]*l[i] l1=[5,2,1] d1=[0,0,0] outstr2='' for i in range(0,3): d1[i]=int(ling/l1[i]) if d1[i]>0: outstr2+=str(l1[i]) + "角:" + str(d1[i])+"张 " ling-=d1[i]*l1[i] print("钞票总张数最少的付款方案:",outstr1,outstr2) 方法二 par = [0.1,0.2,0.5,1,5,10,20,50,100] sum = round(float(input("请输入需要找的零钱:")),1) i = len(par) -1 while i >= 0: if sum >= par[i]: n = int(sum // par[i]) change = n * par[i] sum = float("%.6f" %(sum - change)) print("需要%d个%1.2f元硬币" % (n,par[i])) i -= 1