1/9998の小数第n位から第m位までを表示するPythonのプログラム

def next_digit():
    numerator = 1
    denominator = 9998

    def shift_digit():
        nonlocal numerator
        numerator *= 10
        digit, numerator = divmod(numerator, denominator)
        return digit
    
    return shift_digit

def get_digit_sequence(n, m):
    get_next_digit = next_digit()
    for _ in range(n - 1):
        get_next_digit()
    result = ''
    for _ in range(m - n + 1):
        result += str(get_next_digit())
    return result

n = int(input('第何位から? '))
m = int(input('第何位まで? '))
print(get_digit_sequence(n, m))

実行結果

$ python3 div_1_9998.py 
第何位から? 1
第何位まで? 12
000100020004
$ python3 div_1_9998.py 
第何位から? 37
第何位まで? 48
051210242048