2013-07-02 216 views
2

我想(为乐趣)python打印出'LOADING ...'到控制台。扭曲的是,我想逐字打印出它们之间的睡眠时间为0.1秒(ish)。到目前为止,我做到了这一点:Python:打印到一行之间的时间延迟打印

from time import sleep 
print('L') ; sleep(0.1) 
print('O') ; sleep(0.1) 
print('A') ; sleep(0.1) 
etc... 

然而,它打印它分隔线。

此外,我不能只输入print('LOADING...'),因为它会瞬间打印,而不是字母与中间的sleep(0.1)

该示例很简单,但它引发了一个更一般的问题:是否可以在字符串打印之间执行其他函数时将多个字符串打印到一行?

回答

3

在Python2中,如果在字符串后面加逗号,print不会添加新行。但是,输出可以被缓冲,所以看到的字符慢慢印刷,可能还需要刷新标准输出:

from time import sleep 
import sys 
print 'L', 
sys.stdout.flush() 
sleep(0.1) 

所以打印一些文字慢慢地,你可以使用一个for-loop这样的:

from time import sleep 
import sys 

def print_slowly(text): 
    for c in text: 
     print c, 
     sys.stdout.flush() 
     sleep(0.5) 

print_slowly('LOA') 

在Python3,更改

print c, 

print(c, end='') 
0

已更新,以便在一行上打印所有字母。

from time import sleep 
import sys 
sys.stdout.write ('L') ; sleep(0.1) 
sys.stdout.write ('O') ; sleep(0.1) 
sys.stdout.write ('A') ; sleep(0.1) 
... 
sys.stdout.write ('\n') 

等等

甚至:

from time import sleep 
import sys 
output = 'LOA...' 
for char in output: 
    sys.stdout.write ('%s' % char) 
    sleep (0.1) 

sys.stdout.write ('\n') 
+0

这在单独的行上打印出来,这不是问题要求 –

+0

糟糕。感谢您的更正 –

0

要键入同时你必须做一个字符串一个字母是这样的:

import sys 
import time 

yourWords = "whatever you want to type letter by letter" 

for char in yourWords: 
sys.stdout.write(char) 
time.sleep(0.1)