You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python待办清单类添加任务执行时间统计功能

待办清单时间统计功能修改方案

核心修改逻辑

  • Task类新增add_time、finish_time属性存储时间戳,拆分原混杂的列表属性,逻辑更清晰
  • ToDoList的add_task方法被调用时,自动给任务记录加入待办的时间戳
  • Task的finish方法被调用时,自动记录完成时间戳,计算与加入时间的差值得到耗时
  • 打印列表时根据任务是否有完成时间,判断输出实际耗时还是默认[--- s]
  • 调整打印分隔符为###,匹配预期输出格式

完整可运行代码

import time
class Task:
    def __init__(self, task_name):
        self.task_name = task_name
        self.status = "[ ]"
        self.add_time = None
        self.finish_time = None

    def finish(self):
        self.status = "[x]"
        self.finish_time = time.time()


class ToDoList:
    def __init__(self, name):
        self.name = name
        self.list = []

    def add_task(self, task_obj):
        # 任务加入待办时记录开始时间
        task_obj.add_time = time.time()
        self.list.append(task_obj)

    def print_list(self):
        print(self.name)
        print("###")
        for task in self.list:
            if task.finish_time:
                cost = int(task.finish_time - task.add_time)
                time_str = f"[{cost} s]"
            else:
                time_str = "[--- s]"
            print(task.status, task.task_name, time_str)

# 下方为无需修改的验证调用代码
mylist = ToDoList('My sample ToDoList with time')
tasks = []
for i in range(1, 11):
    task = Task(f'Simple timed task #{i}')
    tasks.append(task)
time.sleep(2)
for task in tasks:
    mylist.add_task(task)
for idx, task in enumerate(tasks):
    if idx % 2 == 0:
        time.sleep(1)
        task.finish()
mylist.print_list()

运行效果说明

运行上述代码后,输出结果和题目给出的预期效果完全一致,奇数编号任务会依次显示1s、2s、3s的耗时,未完成的偶数编号任务显示[--- s]。

内容的提问来源于stack exchange,提问作者neekitit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:57:02