首页 > 解决方案 > 如何让我的生成器无限调用函数

问题描述

我是生成器的新手,我正在尝试使下面的代码工作,我的生成器应该向我的函数发送一个随机数并检查它是否与目标匹配并返回计数以进行匹配,当我运行代码时只是停止迭代,我哪里出错了?

def generator(min_val: int, max_val: int) -> Iterator[int]:
    

    yield random.randint(min_val,max_val)


def find_target(target: int, min_val: int=0, max_val: int=10, max_attempts: int=100):
    
    i=1
    cnt=1

    g =  generator(0,10)
    while i<100:
        a = next(g)
        if g==target:
            return cnt
        else:
            cnt+=1
        i+=1
    if i >=100:
        return None

标签: pythonpython-3.xrandomiteratorgenerator

解决方案


如果您希望您的生成器是无限的,请编写一个无限循环。最简单的可能是:

def generator(min_val: int, max_val: int) -> Iterator[int]:
    while True:
        yield random.randint(min_val,max_val)

推荐阅读