Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改计算器,具有给定的确切更改类型_Python_Calculator - Fatal编程技术网

Python 更改计算器,具有给定的确切更改类型

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

说明是

创建一个程序,允许他输入一定数量的变化, 然后打印出有多少个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 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
是截断的,而不是四舍五入的)。我觉得这有点明显的抱歉。