2013-07-02 99 views
4

我在使用回車實現簡單的倒計時python中遇到了麻煩。我有兩個版本,每個都有問題。Python 2.7回車倒計時

打印版本:

for i in range(10): 
    print "\rCountdown: %d" % i 
    time.sleep(1) 

問題:\r,因爲一個新行打印在年底沒有做任何事情,所以它給人的輸出:

Countdown: 0 
Countdown: 1 
Countdown: 2 
Countdown: 3 
Countdown: 4 
Countdown: 5 
Countdown: 6 
Countdown: 7 
Countdown: 8 
Countdown: 9 

sys.stdout.write函數版本:

for i in range(10): 
    sys.stdout.write("\rCountdown: %d" % i) 
    time.sleep(1) 
print "\n" 

問題:所有的睡眠都發生在開始,10秒後它只是在屏幕上打印Countdown: 9。我可以看到\r正在幕後工作,但是如何讓打印件穿插在睡眠中?

回答

6

對於解決方案編號2,您需要刷新標準輸出。

for i in range(10): 
    sys.stdout.write("\rCountdown: %d" % i) 
    sys.stdout.flush() 
    time.sleep(1) 
print '' 

此外,只是打印一個空字符串,因爲打印將追加換行符。或者使用print '\n' ,,如果您認爲它更具可讀性,則尾隨逗號會抑制通常會附加的換行符。

不知道如何解決,雖然第一個...

-1

另一種解決方案:

for i in range(10): 
    print "Countdown: %d\r" % i, 
    time.sleep(1) 
+0

沒有工作。只打印最後一行。 – Krishh