2016-04-27 153 views
1

因此,我一直在試圖製作一個小程序,向用戶詢問各種問題並根據輸入提供分支輸出,並且我一直試圖使打印文本一次顯示在屏幕上,每個角色之間的短暫延遲,但在同一行上。我見過其他各種方法,如如何讓Python在同一行上一次打印一個字符?

print "H", 
print "e", 

等,但這是非常耗時,需要我輸出每個字母的打印。我已經看到了關於這個主題的其他問題,並嘗試了其中的代碼,但目前沒有任何工作。是否有更簡單的方法來打印我想要的內容,或者將它變成打印樣式函數?

編輯:使此功能可能是很容易的,但我是一個有點與Python

回答

3

初學者的簡單for循環將讓你從任何字符串中的單個字符。唯一真正的技巧是在每個字符後清空輸出以使其立即打印。

import sys, time 

for c in "Hello there!": 
    sys.stdout.write(c) 
    sys.stdout.flush() 
    time.sleep(0.1) 
print 

使之成爲功能確實簡單:

def print1by1(text, delay=0.1): 
    for c in text: 
     sys.stdout.write(c) 
     sys.stdout.flush() 
     time.sleep(delay) 
    print 

print1by1("Hello there!") 
2

關於Python 3,你可以使用關鍵字sep,在蟒蛇2.有幾個選項。

可能還有其他我不是太熟悉Python 2

您可以使用sys.stdout這是一個有點矯枉過正海事組織。

sys.stdout.write('H') 
sys.stdout.write('e') 

使用sys再次...您可以清除softspace

print "H", 
sys.stdout.softspace=0 
print "e", 

或者,

print 'H', 'e' 

或者,

print "H",; print "e" 

更方便,使用+

print "H" + "e" 

有字符的列表,並加入他們的行列,"".join是剛剛加盟的字符到一個字符串,它等效於print "He"

my_chars = ['H', 'e'] 
print "".join(my_chars)