注意:本程序在windows7_64中编译通过,其它系统可能有所差别。
在python中 “\r” 表示回车符,在打印输出时如果后面没有 \n 就不会换行(在windows系统中换行是\r\n),而是将光标移动到本行的最前面,接下来输出的内容就会从第一个字符位置覆盖原来的字符。
可以看到:\r后面的字符’d'覆盖了最开始输出的字符‘a'
基于这种特点,在《笨方法学python》中有这样一个有趣的例子:
while True:
for i in ["/","-","|","\\","|"]:
print "%s\r" % i,
上面的代码中print那行的语句以逗号结尾是因为print打印输出时默认换行的,结尾放个逗号可以避免换行,这样光标才会回到同一行的起始位置。
下面是我自己实现的倒计时小程序:
import time
def getdigit(t):#用于获取整数的位数
if t == 0:
return 1
else:
c = 0
while t!= 0:
t = t/10
c += 1
return c
count = 0
a = input('time: ')
d1 = getdigit(a)
while(count < a):
ncount = a - count
d2 = getdigit(ncount)
fillter = ""
for i in range(d1-d2):#比如如果倒计时从100到99,少了一位,就要补充一个空格才能完全覆盖上一个整数。
fillter += " "
formatter = "%d" + fillter + "\r"
print formatter % ncount,
time.sleep(0.1)
count += 1
print "done"