命令提示符不能逐字写?

Pop*_*Car 10 python python-3.x

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!')
Run Code Online (Sandbox Code Playgroud)

这基本上是我逐字逐句写字的功能,在测试时它在IDLE上完美运行,然而,当我正常运行它(并打开命令提示符)时,我想写的东西保持不可见,然后突然显示出来的话.我输错了什么,还是命令提示符问题?我正在使用Windows 10.

Pad*_*ham 17

你不需要使用sys,你只需要flush=True:

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

您也可以简单地遍历字符串本身.

  • 这完全使事情更易于编写和理解!我甚至不知道有一个内置的代码...(为什么默认情况下不刷新真的?) (2认同)
  • @PopCar,通常输出是行缓冲的,因为你设置end =`""`是你需要刷新的唯一原因,通常默认行为就是你想要的 (2认同)

iob*_*der 10

输出可能是缓冲的,尝试通过在打印后添加以下行来刷新它:

sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)