@qkimov

Как выйти из цикла при вводе определенного слова?

Допустим есть цикл while True и мне нужно из него выйти вводом текста или нажатием клавиш. При этом цикл должен работать до тех пор пока я не выполню вышеупомянутое действие. Как мне это реализовать? Linux / Ubuntu
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ответы на вопрос 2
@MEDIOFF
Python Developer
Если вам нужен цикл который не спрашивает каждый раз ввод то можете использовать неблокирующее чтение из stdin:
while True:
    try:
        stdin = sys.stdin.read()
        if "\n" in stdin or "\r" in stdin:
            break
    except IOError:
        pass
    time.sleep(1)
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Если вам нужен пассивный цикл, в духе "ждём ввода, ввели exit - останавливаемся, иначе что-то делаем и снова ждём", то решение выше подойдёт.
Если вам нужен активный цикл, который что-то делает пока пользователь ничего не ввёл, то input() не подойдёт.
Можно соорудить что-то с потоками:
1. главный поток запускает второй поток, который выполняет тело цикла
2. главный поток уходит в input()
3. по выходу из input() посылаем сигнал второму потоку остановиться и делаем join(), чтобы дождаться его.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы