我正在尝试编写时间算法。但是,我有一个问题,就是通过覆盖先前的打印来成功在同一行上打印代码
我尝试使用“ \ r”将其打印在同一行上。但是,它无法正常工作,因为完成第一分钟后,秒数变为09,19,29,39,依此类推。 不知道这里出了什么问题。
但是,如果我删除了“ \ r”,则该程序可以正常工作,只是它每次都会在新行中打印时间。我想在同一行中打印它。
import time
for i in range(24):
for a in range(60):
for s in range(60):
print(i,":",a,":",s, end='\r')
time.sleep(1)
我希望输出与正常时间一样。但是,它不能以相同的方式工作,不确定为什么
答案 0 :(得分:1)
第一分钟后9
,0
,1
等后面的2
字符就是{{1}中的9
}在第一分钟的最后一秒打印,因为单位秒的秒数没有足够的宽度来覆盖59
。您可以将每个数字的输出格式设置为2的宽度,并且由于我们在这里处理时间,因此请在数字前加0:
9
如果在IDE中运行此命令,它将不会输出任何内容,因为在收到换行符之前,输出将被缓冲。您可以使用import time
for i in range(24):
for a in range(60):
for s in range(60):
print('%02d:%02d:%02d' % (i, a, s), end='\r')
time.sleep(1)
参数强制刷新输出,但是IDE仍然不会输出任何内容,因为flush=True
字符会由于IDE的预处理而擦除输出。您可以在打印\r
之前先刷新输出:
\r