Командная строка не может написать письмо по букве?

import time
def textinput(txt,waittime=0.04):
    end = len(txt)
    letters = 0
    while end != letters:
        print(txt[letters], end = '')
        letters += 1
        time.sleep(waittime)
textinput('Hello there!')

Это, в основном, моя функция написания слов буквами по букве, она работает безупречно на IDLE при ее тестировании, однако, когда я запускаю ее нормально (и она открывает командную строку), то, что я пытаюсь написать, остается невидимым, а затем внезапно отображает слова сразу. Я напечатал что-то не так, или это проблема командной строки? Я использую окна 10.

Ответ 1

Вам не нужно использовать sys, вам просто нужно flush=True:

def textinput(txt,waittime=0.4):
    for letter in txt:
        print(letter, end = '',flush=True)
        time.sleep(waittime)

Вы также можете просто перебирать строку.

Ответ 2

Вывод, вероятно, буферизирован, пытаясь очистить его, добавив следующую строку после печати:

sys.stdout.flush()

Ответ 3

Вероятнее всего, проблема заключается в том, что стандартный вывод не будет автоматически очищаться, вместо этого он получает буферизацию, так как ваш случай работает, вы должны вручную flush() stdout -

import time
import sys
def textinput(txt,waittime=0.04):
    end = len(txt)
    letters = 0
    while end != letters:
        print(txt[letters], end = '')
        sys.stdout.flush()
        letters += 1
        time.sleep(waittime)
textinput('Hello there!')