【问题标题】:Change Calculator with exact type of change given更改计算器,给出确切的更改类型
【发布时间】:2014-12-04 14:37:18
【问题描述】:

说明是

创建一个程序,让他输入一定数量的零钱, 然后打印有多少 25 美分硬币、硬币、镍币和便士 需要弥补所需的金额。例如,如果他输入 1.47, 程序会告诉他需要 5 个硬币,2 个硬币,0 个镍币, 和 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 in moneygiven 和 19.45 in citem 运行时,它给出了这个

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.

【问题讨论】:

  • 如果您使用int 便士而不是float 美元工作,您会发现这更容易 - 浮点数可能会让您感到惊讶(例如,((20 - 19.45) % 0.25) 给出了0.050000000000000044 ,我得到You need 0.05 quarters, 5.375 dimes, 0.0 nickels, 0.0 pennies. 整体)。
  • 我认为您的代码与您的输出不匹配。如果我这样做 qmb = moneyback % quarter 我得到 .05 而不是 2.2

标签: python calculator


【解决方案1】:

开发@jonrsharpe 的评论,您应该使用持有便士的int 变量。这里的重点是您有 integer 数量的具有 float 值的硬币,并且在除法时将它们混合,从而得到奇怪的值。还要考虑到您应该使用正确的除法运算符。

这是一个工作版本:

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,否则你可能会损失一分钱(int 会截断,而不是四舍五入)。
  • 我觉得很抱歉。
【解决方案2】:

您应该使用 // 运算符而不是 / 运算符。 另一件事是 penny= .1 这与 penny=0.10 相同。你应该使用 0.01

// Floor Division - 操作数的除法,其结果是除去小数点后的数字的商。

例子:

 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2019-08-31
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多