python覆盖上一行

Cin*_*der 11 python printing pi overwrite python-2.7

你如何覆盖python 2.7中的先前打印?我正在制作一个简单的程序来计算pi.这是代码:

o = 0
hpi = 1.0
i = 1
print "pi calculator"
acc= int(raw_input("enter accuracy:"))
if(acc>999999):
        print "WARNING: this might take a VERY long time. to terminate, press CTRL+Z"
print "precision: " + str(acc)
while i < acc:
        if(o==0):
                hpi *= (1.0+i)/i
                o = 1
        elif(o==1):
                hpi *= i/(1.0+i)
                o = 0
        else:
                print "loop error."
        i += 1
        if i % 100000 == 0:
                print str(hpi*2))
print str(hpi*2))
Run Code Online (Sandbox Code Playgroud)

它在100000次计算后基本输出当前的pi.如何让它覆盖以前的计算?

rkh*_*rov 19

使用回车符号为输出添加前缀'\r',不要使用换行符号结束'\n'.这会将光标放在当前行的开头,因此输出将覆盖其先前的内容.用一些尾随空格填充它以保证覆盖.例如

sys.stdout.write('\r' + str(hpi) + ' ' * 20)
sys.stdout.flush() # important
Run Code Online (Sandbox Code Playgroud)

像往常一样输出最终值print.

我相信这应该适用于大多数*nix终端模拟器和Windows控制台.YMMV,但这是最简单的方法.