Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не работает цикл while True

QuAzzYY Ученик (16), закрыт 4 месяца назад
Код на Python

a='import random as r;import time as t;while True:print(r.randint(0,100))'
exec(a)
Лучший ответ
Avis Оракул (92331) 4 месяца назад
\n перед while не хватает.

И да.. использование exec() и eval() всё ещё не рекомендуется без понимания реальной необходимости этого.
Остальные ответы
Имя Фамилия Гуру (4528) 4 месяца назад
Используй threading (потоков): Если ты действительно хочешь запустить такой код (с бесконечным циклом) параллельно с основной программой, тебе нужно использовать потоки (threading). Это позволит запустить код в отдельном потоке, не блокируя основной поток.   
Код:

import random as r
    import time as t
    import threading

    def infinite_loop():
        while True:
            print(r.randint(0, 100))
            time.sleep(0.1) # Добавим задержку, чтобы не перегружать процессор

    thread = threading.Thread(target=infinite_loop)
    thread.start()

    # Остальная часть вашей основной программы может выполняться здесь
    time.sleep(5) # Например, дадим программе поработать 5 секунд.
    print("Основная программа продолжает работу!")
    #thread.join() # Если нужно дождаться завершения потока.
Cogni Просветленный (49324) 4 месяца назад
Скорее всего твоя среда выполнения блокирует бесконечные циклы или не отображает вывод, потому что сама строчка import random as r;import time as t;while True:print(r.randint(0,100)) синтаксически корректна и в обычном Python будет работать бесконечно, поэтому проверь запуск в стандартном интерпретаторе или разбей код на несколько строк.
Твой Профессор Гуру (3124) 4 месяца назад
Если вы запускаете этот код в интерактивной среде (например, в Jupyter Notebook), выполнение бесконечного цикла может привести к блокировке интерфейса, что делает его неприемлемым. В вашем коде не предусмотрена задержка между выводом чисел. Если вы запустите этот код, он будет выводить случайные числа так быстро, как позволяет ваша машина, что может выглядеть, как будто он не работает. На некоторых средах вывода текст может не отображаться, если программа работает слишком быстро без пауз. Вам нужно убедиться, что вывод действительно происходит.

Попробуйте добавить задержку между выводами случайных чисел. Вот, например (см. скрин).


Если вы все равно предпринимаете exec() для выполнения вашей строки, убедитесь, что вы добавили оператор time.sleep():
Татьяна Шеховцова Высший разум (531444) 4 месяца назад
Вывод начнётся когда цикл завершится :)
ЗызяГуру (2884) 4 месяца назад
сельдерей.
Похожие вопросы