【问题标题】:Python - Receipt-like outputPython - 类似收据的输出
【发布时间】:2012-10-22 12:07:18
【问题描述】:

我正在做一些功课,我对此感到头疼..要么我很愚蠢,要么我太累了,无法做到这一点..我设法得到正确的输出并确定了优先级,但是当我输入一个浮点数时,它只会发疯。。 总体目标是能够输入一个可以工作的浮点值。我似乎无法理解数学解决方案

price = input("Enter Price ")
cash = input("Enter Cash ")
coins = [100, 50, 20, 10, 5, 1, 0.5]
change = cash-price
i = 0
while i<len(coins):
    print int(change/coins[i]),str(" X "),coins[0+i]
    if change>0:
        change = change-((change/coins[i])*coins[i])
    else:
        change = max(change,0)
    i=i+1

谢谢!

【问题讨论】:

  • 使用for coin in coins: 而不是while...
  • 为什么是change = max(change, 0)?该分支将始终导致change=0,那么为什么还要进行额外的计算呢?
  • 另外,使用for coin in coins:,而不是while i&lt;len(coins): ... i=i+1
  • 此外,change 不应小于零。这是你应该早点处理的问题。

标签: python receipt


【解决方案1】:

我懒得检查数学,但似乎你在从零钱中减去时忘记去掉浮点数,所以部分硬币被视为当前的全部金额,一切都归零。我加了一个int

price = input("Enter Price ")
cash = input("Enter Cash ")
coins = [100, 50, 20, 10, 5, 1, 0.5]
change = cash-price
i = 0
while i<len(coins):
    print int(change/coins[i]),str(" X "),coins[0+i]
    if change>0:
        change = change-(int(change/coins[i])*coins[i])
    else:
        change = max(change,0)
    i=i+1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2022-01-05
    相关资源
    最近更新 更多