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