A whimsical variation
def kempner(n):
As we have learned in various math courses, the n:th harmonic number is equal to the sum of the reciprocals of the first n integers, that is, Hn = 1/1 + 1/2 + 1/3 + … + 1/n. As n approaches infinity, so does the harmonic number Hn, although quite slowly, but with all kinds of useful properties.
A whimsical variation known as Kempner series works otherwise the same way, but adds up only those fractions that do not contain the digit nine anywhere in them. Your function should compute and return Kn, the n:th term of the Kempner series by adding up the reciprocals of the first n positive integers that do not contain the digit nine. For example, to compute K10, you would need to add up 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 + 1/8 + 1/10 + 1/11, the first ten such reciprocals.
Instead of approximating the result inaccurately with fixed precision floating point numbers, you must perform this computation with perfect accuracy using Fraction objects from the fractions module. However, since the numerators and denominators of these fractions grow pretty quickly as n increases, the result should be returned as a Fraction object given by the approximation produced by calling the method limit_denominator(1000) to approximate the true value of the result as the nearest fraction whose denominator is less than one thousand.