python覆盖以前的lin

2024-05-03 08:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Python2.7中覆盖以前的打印? 我正在做一个简单的程序来计算π。代码如下:

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))

它基本上在100000次计算后输出电流pi。如何使其覆盖以前的计算?


Tags: 代码程序inputrawifpicalculatorint
2条回答

用回车符'\r'作为输出的前缀,不要用换行符'\n'结束输出。这将把光标放在当前行的开头,因此输出将覆盖其内容的前面。用一些尾随空格填充以保证覆盖。E、 g

sys.stdout.write('\r' + str(hpi) + ' ' * 20)
sys.stdout.flush() # important

像往常一样用print输出最终值。

我相信这在大多数*nix终端仿真器和Windows控制台中都应该有效。但这是最简单的方法。

签出this answer。基本上\r工作正常,但是您必须确保打印时没有换行符。

cnt = 0
print str(cnt)
while True:
    cnt += 1
    print "\r" + str(cnt)

这不起作用,因为每次都会打印一个新行,而\r只会返回到上一个新行。

print语句中添加逗号将阻止它打印换行符,因此\b将返回到您刚才编写的行的开头,您可以重写它。

cnt = 0
print str(cnt),
while True:
    cnt += 1
    print "\r" + str(cnt),

相关问题 更多 >