python `print` не работает в цикле

У меня есть несколько циклов вместе и сон в самом внутреннем цикле. например:

from time import sleep for i in range(10): print i, for j in range(-5,5): if j > 0: print '.', else: print 'D', sleep(1) print '' 

если вы запустите код, вы можете ожидать получить значение i после него D sleep 1 second и еще один D и снова спать до конца.

но результат разницы, он ждет 10 секунд и печатает всю строку 0 DDDDDD . . . . 0 DDDDDD . . . . и снова ожидание печати следующей строки.

Я обнаружил, что запятая в конце печати вызывает эту проблему. Как я могу это решить?

  • Чтение файла с указанным разделителем для новой строки
  • Быстрая numpy roll_product
  • Python не может выделять память с помощью multiprocessing.pool
  • unbound method должен быть вызван с экземпляром X в качестве первого аргумента (вместо этого используется экземпляр X)
  • Как сохранить numpy от трансляции при создании массива объектов из разных фасонных массивов
  • Python запрашивает модуль многопоточности
  • Как получить синтаксис WordNet с учетом идентификатора смещения?
  • создание логического массива, который сравнивает числовые элементы с None
  • 2 Solutions collect form web for “python `print` не работает в цикле”

    Из-за существования запятой выходные буферы до \n .

    Вы должны очистить stdout после каждой печати или использовать sys.stdout.write и буфер для очистки.

    Определите свой метод печати:

     import sys def my_print(text): sys.stdout.write(str(text)) sys.stdout.flush() 

    и в конце строки напечатайте a \n

    Проблема с использованием print <something>, является буферизацией и печатью только тогда, когда идентификатор результата готов к печати.

    Вы можете решить эту print_function с помощью print_function с __future__ (что также будет соответствовать Python 3):

     from __future__ import print_function from time import sleep import sys for i in range(10): print(i, end='') for j in range(-5,5): if j > 0: print('.', end='') else: print('D', end='') sys.stdout.flush() sleep(1) print('') 
    Python - лучший язык программирования в мире.