当前位置:嗨网首页>书籍在线阅读

08-第2步_记录并输出单圈时间

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

第2步:记录并输出单圈时间

现在,让我们开始为每一个新的单圈编码,计算前一圈花了多少时间,并计算自启动秒表后经过的总时间。我们将显示单圈时间和总时间,并为每个新的单圈增加圈计数。将下面的代码添加到程序中:

   #! python3
   # stopwatch.py - A simple stopwatch program.
   import time
   --snip--
   # Start tracking the lap times.
❶ try:
    ❷ while True:
        input()
        ❸ lapTime = round(time.time() - lastTime, 2)
        ❹ totalTime = round(time.time() - startTime, 2)
        ❺ print('Lap #%s: %s (%s)' % (lapNum, totalTime, lapTime), end='')
           lapNum += 1
lastTime = time.time() # reset the last lap time
 ❻except KeyboardInterrupt:
       # Handle the Ctrl-C exception to keep its error message from displaying.
       print('\nDone.')

如果用户按Ctrl-C快捷键停止秒表,程序将抛出 KeyboardInterrupt 异常。如果程序的执行不是一个 try 语句,程序就会崩溃。为了防止崩溃,我们将这部分程序包装在一个 try 语句中❶。我们将在 except 子句中处理异常❻,所以当Ctrl-C快捷键按下并引发异常时,程序执行转向 except 子句,并输出 Done ,而不是 KeyboardInterrupt 错误信息。在此之前,执行处于一个无限循环中❷,调用 input() 并等待,直到用户按回车键结束一圈。当一圈结束时,我们用当前时间 time.time() 减去该圈开始的时间 lastTime ,计算该圈花了多少时间❸。我们用当前时间减去秒表最开始启动的时间 startTime ,计算总共流逝的时间❹。

由于这些时间计算的结果在小数点后有许多位(如 4.766272783279419 ),因此我们在❸和❹行用 round() 函数,将浮点值四舍五入到小数点后两位。

在❺行,我们输出圈数、消耗的总时间和单圈时间。由于用户为 input() 调用按回车键时,会在屏幕上输出一个换行,因此我们向 print() 函数传入 end='' ,避免输出重复空行。输出单圈信息后,我们将计数器 lapNum 加1,将 lastTime 设置为当前时间(这就是下一圈的开始时间),从而为下一圈做好准备。