5

改行を使用してPythonで単純なカウントダウンを実装するのに問題があります。2 つのバージョンがあり、それぞれに問題があります。

印刷版:

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が舞台裏で動作していることはわかりますが、スリープ中にプリントを点在させるにはどうすればよいですか?

4

5 に答える 5

8

解決策 2 では、stdout をフラッシュする必要があります。

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

また、印刷すると改行が追加されるため、空の文字列を印刷するだけです。またはprint '\n' ,、末尾のコンマが通常追加される改行を抑制するため、読みやすいと思われる場合に使用します。

最初のものを修正する方法がわからない...

于 2013-07-03T03:32:54.407 に答える
-2

別の解決策:

for i in range(10):
    print "Countdown: %d\r" % i,
    time.sleep(1)
于 2013-09-10T13:59:14.133 に答える