我的简单 python 代码有什么问题?

我需要创建一个脚本,要求用户输入 $ 金额,然后输出最小数量的硬币,以使用 25 美分、一角硬币、五分硬币和便士来创建该金额。


mTotal = (float(input("Enter the amount you are owed in $:")))

numCoins = 0

while (mTotal != 0):

    if ((mTotal - 0.25) >= 0):

        mTotal-=0.25

        numCoins += 1

    elif ((mTotal - 0.10)>= 0):

        mTotal-=0.10

        numCoins += 1

    elif ((mTotal - 0.05)>= 0):

        mTotal-=0.05

        numCoins += 1

    elif ((mTotal - 0.01)>= 0):

        mTotal-=0.01

        numCoins += 1

print("The minimum number of coins the cashier can return is:", numCoins)

出于某种原因,它仅在我输入 0.01、0.05、0.10 或 0.25 的精确倍数时才有效,否则 while 循环将永远持续下去。


凤凰求蛊
浏览 131回答 2
2回答

缥缈止盈

您可以这样做: round((float(input("请输入您欠的金额 $:"))))问题在于,当您转换为浮点数时,字符串到浮点数的转换不会 100% 准确。例如,如果您输入 1.17 并将其转换为浮点数,它将类似于 1.1699999999999999。

弑天下

我设法通过将输入乘以 100 并将其转换为整数来修复它。userInput = (float(input("Enter the amount you are owed in $:")))mTotal = int(userInput*100)numCoins = 0while (mTotal != 0):    if ((mTotal - 25) >= 0):        mTotal-=25        numCoins += 1    elif ((mTotal - 10)>= 0):        mTotal-=10        numCoins += 1    elif ((mTotal - 5)>= 0):        mTotal-=5        numCoins += 1    elif ((mTotal - 0.01)>= 0):        mTotal-=1        numCoins += 1print("The minimum number of coins the cashier can return is:", numCoins)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python