, : next(gen). , : print(list(decimals(4))) :
for digit in decimals(4):
print(digit)
(, decimals(3)), , , itertools.islice:
from itertools import islice
for digit in islice(decimals(3), 10):
print(digit)
, , - . , . , :
def decimals(number):
"""
Takes a number and generates the digits of 1/n.
"""
divisor = number
dividend = 1
remainder = 1
while remainder:
quotient = dividend // divisor
remainder = dividend % divisor
if remainder < divisor:
dividend = remainder * 10
else:
dividend = remainder
yield quotient
. :
def decimals(number):
dividend = 1
while dividend:
yield dividend // number
dividend = dividend % number * 10