1 년 이내에 균형을 유지하기 위해 필요한 최소 월간 지불액을 산출해야하는 코드가 있습니다. 그것은 (내가 테스트 한 숫자가 자신의 결과를 아래에 있습니다) 772000000000000.숫자가 772000000000000보다 크거나 같으면 파이썬 코드가 무한 루프를 생성하는 이유는 무엇입니까?
여기 코드입니다 (제가 테스트 한 지금까지로)까지의 모든 숫자에 대해 완벽하게 작동합니다 :
import time
balance = float(input("balance: "))
annualInterestRate = float(input("AIR: "))
# formulas for lower and higher binding for bisectional search
monthlyInterestRate = annualInterestRate/12
lower = balance/12
higher = (balance * (1 + monthlyInterestRate) ** 12)/12
while True:
guess = ((higher - lower)/2 + lower)
print('higher: %s' % higher)
print('lower: %s' % lower)
remaining = balance
for i in range(12):
unpaid = remaining - guess
remaining = unpaid + monthlyInterestRate*unpaid
if higher - lower <= .01 and remaining < 0:
result = lower
print("Lowest Payment: %s" % result)
break
elif higher - lower <= .01 and remaining >= 0:
result = higher
print("Lowest Payment: %s" % result)
break
elif remaining < -0.01:
higher = guess
print("remaining: %s" % remaining)
print(guess)
print('too high')
time.sleep(.5)
elif remaining > 0:
lower = guess
print("remaining: %s" % remaining)
print(guess)
print('too low')
time.sleep(.5)
내가 말했듯이, 이것은 테스트 한 모든 수에 대해 정확한 결과를 제공하지만 테스트를 거친 후 999999999999999와 무한 루프가 발생했습니다. 다음 값을 모두 테스트하여 AIR가 .2 다른 AIR를 사용하여 다른 값을 생성 할 수 있습니다. 숫자에 따라 비슷한 결과가 나올 수 있지만 다음은 어떤 일이 발생했는지에 대한 좋은 아이디어입니다.
6620 00000000000 작품
771999999999999 작품 몇 시간 후 또 다시
772000000000000 반복 높고 낮은
772100000000000 작품 몇 시간 후 또 다시
772200000000000 반복 높고 낮은
772300000000000 무한 루프
772400000000000 infini 이런 일이 왜 테 루프
772500000000000 무한 루프
882100000000000 무한 루프
그들에게 자신을 시도 자유롭게
999999999999999 무한 루프, 나는 완전히 어안이 벙벙 해요?
이렇게했습니다. 너는 성자 야, 고마워! 그 일이 일어날 지 몰랐다. – Cdhippen