[在python 3中使用带有输入功能的生成器时遇到问题

问题描述 投票:0回答:1
def prime():
n = 1000
if n<2:
    return 0
yield 2
x = 3
while x <= n:
    for i in range(3,x,2):
        if x%i==0:
            x+=2
            break
    else:
        yield x
        x+=2

#if i try to call each yielded value with an input function i don't get anything!

def next_prime():
generator = prime()
y = input('Find next prime? yes/no or y/n: ')
if y[0].lower == 'y':
    print(generator.next())

next_prime()

#but if i call the function without using an input i get my values back

generator = prime()
def next_prime():
    print(next(generator))

next_prime()

我如何使第一个next_prime()函数与输入函数一起使用。如果我尝试使用输入函数调用每个产生的值,那么我什么也不会得到,但是如果我不使用输入调用函数时,我会返回我的值。生成器不能使用输入功能吗?

python-3.x generator primes yield
1个回答
0
投票

您犯的错误是您忘记了下关键字的圆括号

def next_prime():
    generator = prime()
    y = input('Find next prime? yes/no or y/n: ')
    #forgot the round brackets 
    if y[0].lower() == 'y':
        print(next(generator))

next_prime()
© www.soinside.com 2019 - 2024. All rights reserved.