Start New Discussion within our Software Development Community
import itertools
import math

# to use input Python3 style in Python2
    input = raw_input

# margin to consider floating point numbers equal
delta = 1E-6

#A program to determine how long it takes for an investment to double
def main():
    I=float(input("Enter annualized interest rate as a percent: "))/100.
    # with generator
    increase = 1+I
    time_to_double = next(n for n in itertools.count() if increase**n > 2)
    print('Time to double by generator is:', time_to_double)
    # exactly by logarithm
    print('Years to exactly double by logarithm: %.3f' % math.log(2, increase))
    assert increase ** math.log(2, increase) - 2 < delta

IT/Science/Contracts/Religious translation/interpreting FIN-ENG-FIN
Python programming

That assert check should of course be:

assert abs(increase ** math.log(2, increase) - 2) < delta

ie taking absolute value, otherwise any negative value would pass.

The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.