我需要创建一个脚本,要求用户输入 $ 金额,然后输出最小数量的硬币,以使用 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。
弑天下
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)
添加回答
举报
0/150
提交
取消