2013-07-02 214 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)