c语言编程笔录

首页 >   > 笔记大全

笔记大全

用Python编写的持续时间计时器

更新时间:2023-12-04

1. 需求分析

针对持续时间计时器的需求,我们可以先考虑主要功能点:

  • 展示当前时间
  • 开始计时
  • 暂停计时
  • 记录计时时间

针对以上要求,我们可以使用Python的time模块来实现。在代码中,需要使用time.time()或time.localtime()获取当前时间,使用time.sleep()控制定时器时间等。


import time

# 获取当前时间
current_time = time.time()

# 格式化当前时间
local_time = time.localtime(current_time)
current_time_str = time.strftime("%Y-%m-%d %H:%M:%S", local_time)

# 展示当前时间
print("当前时间是:{}".format(current_time_str))

2. 开始计时

通过以上代码获取当前时间后,可以在开始计时时将其作为起始时间,然后通过time.time()获取当前时间并计算时间差。需要注意的是,time.time()获取的时间是UNIX时间戳,我们需要将其转换为可读性更强的时间格式。


import time

# 获取起始时间
start_time = time.time()

while True:
    # 获取当前时间
    current_time = time.time()

    # 计算时间差
    elapsed_time = current_time - start_time

    # 格式化时间差为HH:MM:SS
    elapsed_time_str = time.strftime("%H:%M:%S", time.gmtime(elapsed_time))
    
    # 展示持续时间
    print("持续时间是:{}".format(elapsed_time_str))

    # 控制定时器时间为1秒
    time.sleep(1)

3. 暂停计时

为了支持暂停功能,我们可以通过记录暂停时间点和当前时间点之间的时间差来计算有效的计时时间。可以通过一个变量来标记当前状态是否为暂停状态,在开始计时时初始状态为False,暂停时状态为True。


import time

# 获取起始时间
start_time = time.time()

# 初始化暂停状态
paused = False
paused_time = 0

while True:
    # 如果处于暂停状态,则记录暂停时间
    if paused:
        paused_time += 1
        time.sleep(1)
        continue

    # 获取当前时间
    current_time = time.time()

    # 计算时间差(有效计时时间=当前时间-起始时间-暂停时间)
    elapsed_time = current_time - start_time - paused_time

    # 格式化时间差为HH:MM:SS
    elapsed_time_str = time.strftime("%H:%M:%S", time.gmtime(elapsed_time))

    # 展示持续时间
    print("持续时间是:{}".format(elapsed_time_str))

    # 控制定时器时间为1秒
    time.sleep(1)

    # 暂停计时
    user_input = input("是否暂停计时?(y/n)")
    if user_input.lower() == "y":
        paused = True
        paused_start_time = time.time()
    else:
        paused = False
        paused_end_time = time.time()
        paused_time += paused_end_time - paused_start_time

4. 记录计时时间

为了实现记录计时时间的功能,我们需要使用Python的文件读写操作。在开始计时时,可以将起始时间和记录文件的路径传入函数,然后将计时时间写入记录文件中。需要注意的是,如果文件不存在,则需要先创建文件。


import time

# 记录持续时间到文件
def record_elapsed_time(start_time, file_path):
    # 如果文件不存在,则创建文件
    try:
        with open(file_path, mode='x') as f:
            pass
    except:
        pass

    # 打开文件并写入持续时间
    with open(file_path, mode='a') as f:
        while True:
            # 获取当前时间
            current_time = time.time()

            # 计算时间差(有效计时时间=当前时间-起始时间)
            elapsed_time = current_time - start_time

            # 格式化时间差为HH:MM:SS
            elapsed_time_str = time.strftime("%H:%M:%S", time.gmtime(elapsed_time))

            # 写入持续时间
            f.write(elapsed_time_str)
            f.write('\n')

            # 控制定时器时间为1秒
            time.sleep(1)

            # 是否停止计时
            user_input = input("是否停止计时?(y/n)")
            if user_input.lower() == "y":
                break

# 使用方式:记录计时时间到test.txt文件中
record_elapsed_time(time.time(), "test.txt")