Python 更改计算器,具有给定的确切更改类型
说明是 创建一个程序,允许他输入一定数量的变化, 然后打印出有多少个25美分、10美分、5美分和1美分 需要补充所需的数量。例如,如果他输入1.47, 程序会告诉他需要5个25美分,2个10美分,0个5美分, 和2便士 我真的不知道怎么做,但我试了一下。我真的不知道该怎么办Python 更改计算器,具有给定的确切更改类型,python,calculator,Python,Calculator,说明是 创建一个程序,允许他输入一定数量的变化, 然后打印出有多少个25美分、10美分、5美分和1美分 需要补充所需的数量。例如,如果他输入1.47, 程序会告诉他需要5个25美分,2个10美分,0个5美分, 和2便士 我真的不知道怎么做,但我试了一下。我真的不知道该怎么办 print "Change Calclator" quarter = .25 dime = .10 nickel = .5 penny = .1 moneygiven = raw_input("Enter how muc
print "Change Calclator"
quarter = .25
dime = .10
nickel = .5
penny = .1
moneygiven = raw_input("Enter how much money given: ")
citem = raw_input("How much did the item cost?: ")
moneygiven = float(moneygiven)
citem = float(citem)
moneyback = moneygiven - citem
qmb = moneyback % quarter
partialtotal = moneyback - qmb * quarter
dmb = partialtotal / dime
dpartialtotal = partialtotal - dmb * dime
nmb = dpartialtotal / nickel
npartialtotal = dpartialtotal - nmb * nickel
pmb = npartialtotal / penny
ppartialtotal = npartialtotal - pmb * penny
print "You need %s quarters, %s dimes, %s nickels, %s pennies." % (qmb, dmb, nmb, pmb)
当运行时,给出的货币为20,citem为19.45,则给出此值
Change Calclator
Enter how much money given: 20
How much did the item cost?: 19.45
You need 2.2 quarters, 0.0 dimes, 0.0 nickels, 0.0 pennies.
您应该使用//运算符而不是/运算符。 另一件事是你把penny=0.1,这和penny=0.10是一样的。您应该使用0.01 //下限除法-操作数的除法,其结果是删除小数点后的数字的商 例如:
a=.25
.55//a = 2.0
代码工作
print "Change Calclator"
quarter = .25
dime = .10
nickel = .05
penny = .01
moneygiven = raw_input("Enter how much money given: ")
citem = raw_input("How much did the item cost?: ")
moneygiven = float(moneygiven)
citem = float(citem)
moneyback = moneygiven - citem
qmb = moneyback // quarter
partialtotal = moneyback - qmb * quarter
dmb = partialtotal // dime
dpartialtotal = partialtotal - dmb * dime
nmb = dpartialtotal // nickel
npartialtotal = dpartialtotal - nmb * nickel
pmb = npartialtotal // penny
ppartialtotal = npartialtotal - pmb * penny
print "You need %s quarters, %s dimes, %s nickels, %s pennies." % (qmb, dmb, nmb, pmb)
在开发@jornsharpe的评论时,您应该使用
int
持有便士的变量。这里的要点是,你有一个整数数量的浮点数硬币,你在分割的时候把它们混合在一起,从而得到奇怪的值。还应考虑使用适当的除法运算符
这里有一个工作版本:
print "Change Calclator"
quarter = 25
dime = 10
nickel = 5
penny = 1
moneygiven = raw_input("Enter how much money given: ")
citem = raw_input("How much did the item cost?: ")
moneygiven = int(float(moneygiven) * 100)
citem = int(float(citem) * 100)
moneyback = moneygiven - citem
qmb = moneyback / quarter
partialtotal = moneyback - qmb * quarter
dmb = partialtotal // dime
dpartialtotal = partialtotal - dmb * dime
nmb = dpartialtotal // nickel
npartialtotal = dpartialtotal - nmb * nickel
pmb = npartialtotal // penny
ppartialtotal = npartialtotal - pmb * penny
print "You need %s quarters, %s dimes, %s nickels, %s pennies." % (qmb, dmb, nmb, pmb)
如果你使用的是
int
pennies,而不是float
dollars,你会发现这要容易得多——浮点数做的事情可能会让你吃惊(例如,((20-19.45)%0.25)
给出了0.05000000000000044
,我得到你需要0.05个25美分,5.375个一角硬币,0.0个五分镍币,0.0便士。
总的来说)。我认为你的代码与你的输出不匹配。如果我做了qmb=moneyback%quarty
我得到的是.05而不是2.2你应该尽早跳转到int
,否则你可能会得到一分钱(因为int
是截断的,而不是四舍五入的)。我觉得这有点明显的抱歉。