每次打印都会覆盖打印行以进行时间算法

时间:2019-04-04 16:57:34

标签: python python-3.x line-breaks

我正在尝试编写时间算法。但是,我有一个问题,就是通过覆盖先前的打印来成功在同一行上打印代码

我尝试使用“ \ 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)

我希望输出与正常时间一样。但是,它不能以相同的方式工作,不确定为什么

1 个答案:

答案 0 :(得分:1)

第一分钟后901等后面的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
相关问题