为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

凤凰求蛊 2021-06-15 17:23:40
我需要创建一个脚本,要求用户输入 $ 金额,然后输出最小数量的硬币,以使用 25 美分、一角硬币、五分硬币和便士来创建该金额。mTotal = (float(input("Enter the amount you are owed in $:")))numCoins = 0while (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 += 1print("The minimum number of coins the cashier can return is:", numCoins)出于某种原因,它仅在我输入 0.01、0.05、0.10 或 0.25 的精确倍数时才有效,否则 while 循环将永远持续下去。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您可以这样做: round((float(input("请输入您欠的金额 $:"))))

问题在于,当您转换为浮点数时,字符串到浮点数的转换不会 100% 准确。例如,如果您输入 1.17 并将其转换为浮点数,它将类似于 1.1699999999999999。


查看完整回答
反对 回复 2021-06-29
?
弑天下

TA贡献1818条经验 获得超8个赞

我设法通过将输入乘以 100 并将其转换为整数来修复它。


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

mTotal = int(userInput*100)

numCoins = 0

while (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 += 1

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


查看完整回答
反对 回复 2021-06-29
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信