Как сделать, чтобы текст выводился в одну строчку через For Python

Рейтинг: 1Ответов: 1Опубликовано: 15.07.2023
import time

string1 = input("Please enter the line: ")
string2 = string1.split()

delay = input("Please enter the delay: ")

for i in string2:
    print(i, end = ' ')
    time.sleep(int(delay))

Необходимо, чтобы одно слово выводилось, скажем, каждую секунду в 1 строчку. Проблема: когда введено всё необходимое, то программа работает некорректно, а именно, при условии, что введено 3 слова, текст появится сразу же через 3 секунды, вместо появления по одному слову, как исправить программу?

Ответы

▲ 3Принят

print поддерживает параметр flush. Вам нужно добавить flush=True чтобы получить нужный эффект:

import time


string1 = input("Please enter the line: ")
string2 = string1.split()

delay = input("Please enter the delay: ")

for i in string2:
    print(i, end=' ', flush=True)
    time.sleep(int(delay))
print()

Объяснение простое: для скорости вывод накапливается в строчном буфере пока вы не завершите строку переводом строки (что print и делает если не пользоваться end=' '). Когда строка переведена, накопленные данные выводятся. Это увеличивает скорость работы вывода в большинстве случаев. Но и иногда мешает, тогда с помощью flush=True вы отключаете строчный буфер и данные выводятся немедленно.