以下代码适用于Python 2和Python 3。
但对于Python 3,请参见Ramchandra Apte的好答案。
from sys import stdout
from time import sleep
for i in xrange(5,0,-1):
stdout.write(str(i))
sleep(1)
stdout.write(' Blastoff')
"
str(i)
是必需的,以便这段代码在命令行窗口中执行。在编辑 shell 窗口中,可以写成 stdout.write(i)
,但是 '\b'
信号不会将光标移回,会在其位置上出现一个方块。
"
.
顺便说一下,尝试以下代码以查看发生了什么。
'\b'
触发光标向后移动一个位置,替换前面的字符,因此每个字符都只写在它之前的位置上。这仅适用于命令行窗口,而不是编辑 shell 窗口。
from sys import stdout
from time import sleep
for i in xrange(5,0,-1):
stdout.write(str(i))
sleep(1)
stdout.write('\b')
stdout.write('Blastoff')
raw_input('\n\npause')
复杂化(仍需在命令行窗口中执行):
from sys import stdout
from time import sleep
tu = (' End in 24 seconds',
' It remains 20 seconds',
' Still only 16 seconds',
' Do you realize ? : 12 seconds left !',
' !!!! Hey ONLY 8 seconds !!')
for s in tu:
stdout.write('*')
sleep(1)
stdout.write(s)
sleep(2)
stdout.write(len(s)*'\b' + len(s)*' ' + len(s)*'\b')
sleep(1)
stdout.write(len(tu)*'\b' + len(tu)*'!' + ' ')
n = 4
for x in xrange(n,0,-1):
stdout.write('\b!'+str(x))
sleep(1)
stdout.write(len(tu)*'\b' + n*'\b' + '\b')
stdout.write(' # !! BLASTOUT !! #\n')
sleep(0.8)
stdout.write(' ## !! BLASTOUT !! ##\n')
sleep(0.8)
stdout.write(' ### !! BLASTOUT !! ##\n')
sleep(0.8)
stdout.write(' #### !! BLASTOUT !! ####\n')
sleep(3)
print
语句后面添加一个逗号。 - rlms