У меня проблемы с использованием генераторов с функцией ввода в python 3 - PullRequest
1 голос
/ 29 мая 2020
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 функцию работать с функцией ввода. Если я попытаюсь вызвать каждое полученное значение с помощью функции ввода, я ничего не получу, но если я вызову функцию без использования ввода, я верну свои значения. Это что, генераторы не работают с функцией ввода?

1 Ответ

2 голосов
/ 29 мая 2020

Вы сделали ошибку: вы забыли круглые скобки нижнего ключевого слова

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...