Ввод в строку несколько чисел через пробел в Python

class Runner(object):
    def eval(self, string):
        start, goal, days = map(int, string.split())
        i=1
        while start<goal:
            start*=1.1
            i+=1
        if i<days:
            value = True
        else:
            value = False
        return value
    def loop(self):
        line = input("Enter three values: ")
        value = self.eval(line)
        print(value
        if __name__ == '__main__':
        calc = Runner()
        calc.loop()

Ввод

KeyboardInterrupt
5 10 15
SyntaxError: invalid syntax

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

input_words - генератор, которые читает из входного потока слова. Он создаётся один раз, используется столько раз, сколько нужно. take - выбирает из любого генератора n первых значений. Остальное - пример использования:

def input_words():
    while True:
        yield from input().split()


def take(g, n):
    yield from (next(g) for _ in range(n))


inp = input_words()
while True:
    print('\nEnter three ints:')
    a, b, c = map(int, take(inp, 3))
    print('The input is', a, b, c)
$ python input.py

Enter three ints:
1 2 3
The input is 1 2 3

Enter three ints:
1 2
3
The input is 1 2 3

Enter three ints:
1
2
3
The input is 1 2 3

Enter three ints:
→ Ссылка