如何为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
相关产品推荐
相关产品推荐

