我写了下面的信用卡程序来回答这个网站上的一个问题(Credit card balance exercise in Python):
def main(rb):
count = 0
while rb > 0:
rb = rb*(0.18/12 + 1) - 120
count += 1
return count, round(rb, 2)
print(main(input('Balance: '))) #Balance: 1200
它计算将要进行的还款次数和最终余额。OP对1200的原始余额感兴趣,但我更改了它,以便用户可以输入自己的原始余额。对于8000及以下的值,答案只需几分之一秒。8000以上,永远不会有答案。终端一直是空白的。我以前从没见过这种行为。我对此感到困惑。有人能复制吗?为什么会这样?你知道吗
您可以通过使用
rb = 8001
遍历一次循环来了解它挂起的原因。你知道吗值为<;=8000时,值减小;值为>;8000时,值增大,因此
rb >= 0
始终为真。你知道吗8000美元*(1+0.18/12)—$120=8000美元。你知道吗
因此,当你模拟支付你得到一个无限循环。你知道吗
您的代码实际上在输入8000美元时终止,这只是运气,因为浮点数是四舍五入的。如果计算准确,程序就不会终止。你知道吗
相关问题 更多 >
编程相关推荐