我创建了一个简单的python程序,最多可以计算10个
我想要实现的是程序删除以前的号码并打印新号码
这是我创建的代码:
import sys
import time
for i in range(10):
text = "\r" + str(i)
sys.stdout.write(text)
sys.stdout.flush()
time.sleep(1)
哪个输出:
0123456789
在"\r"
之后更改代码以使str(i)
无效
import sys
import time
for i in range(10):
text = str(i) + "\r"
sys.stdout.write(text)
sys.stdout.flush()
time.sleep(1)
这也导致了:
0123456789
我一直在寻找它,并且最后只显示9
,但它不会覆盖之前的数字
修改
我正在使用Windows,Python3
编辑2:
How to overwrite the previous print to stdout in python?不给我一个有效的答案,它仍然没有做我想要的
因此,由于我出色的推理,它不是重复的:P
答案 0 :(得分:3)
作为替代方案,您可以使用os.system("cls")
答案 1 :(得分:0)
虚拟终端接受一些控制符号。其中一个是'\ b',将一个carret移回一个地方。这个也在Windows上被接受,我将在下面的示例中使用它。 Unix终端接受更多控件,包括颜色变化等等。
from time import sleep
import sys, os
def clear ():
os.system("cls" if sys.platform.startswith("win") else "clear")
clear()
s = "1"
sys.stdout.write(s)
for x in range(2, 21):
sleep(1)
# Return carret to beginning of line:
l = len(s)
s = l*"\b"
sys.stdout.write(s)
# Clear line (just in case):
s = l*" "
sys.stdout.write(s)
# Return to the beginning again:
s = l*"\b"
sys.stdout.write(s)
# Write over new text:
s = str(x)
sys.stdout.write(s)
答案 2 :(得分:0)
使用end参数将“ \ r”指定为行结束。
import time
for i in range(10):
print(i, end="\r")
time.sleep(1)
答案 3 :(得分:-1)
我会这样做:
for x in range(10):
print("{}".format(x), end="\r")
答案 4 :(得分:-1)
为什么不使用python的标准打印?在许多调试器屏幕中给出了Althougth,这往往不起作用。在终端(ubuntu)它确实
import time
for i in range (10):
print(i, end='\r')
time.sleep(1)
也许stdout也存在某些东西,但在这种情况下我通常使用python3的打印
答案 5 :(得分:-1)
我相信你的代码应该可以正常工作。问题应该是您使用的是 Windows终端。尝试使用Linux。大多数代码在Windows中不起作用。您可以参考此link来了解为什么必须在Windows上停止使用python。
这也是您可以尝试的替代代码。
import time for i in range(10): text = str(i) print(text,end = "\r") time.sleep(1)