实现NONinfinite生成器

时间:2019-03-14 11:25:15

标签: generator python-3.6

我从here借用了一些代码,但是我不知道如何使代码不无限运行。

具体来说,我不知道该怎么做是引用以前产生的数字并检查是否已返回当前产生的数字。我希望函数一旦开始循环就停止。有没有办法引用以前产生的值?

1 个答案:

答案 0 :(得分:0)

这是非生成器解决方案

#when doing long division on a pair of numbers, (a,b), when you proceed through the algorigthm, 
#you get new pairs (rem,b). You stop the algorithm when rem==0 or when the remainder is present
#in the existing list of digits
def decimals(number):
    dividend = 1
    digit = []
    while dividend:
        if dividend//10 in digit: 
            return digit
        digit += [dividend // number]
        dividend = dividend % number * 10

一个更简化的版本,仍然不是生成器,将会是

def decimals(number):
    dividend = 1
    digit = []
    while dividend and dividend//10 not in digit:
        digit += [dividend // number]
        dividend = dividend % number * 10
    return digit