Python时间累加报错AttributeError: 'datetime.datetime' object has no attribute 'timedelta'
错误原因
- 直接报错根源:
timedelta是datetime模块下的独立类,你已经单独导入了,不属于datetime实例的属性,你代码里写initialTime.timedelta(m)属于调用方式错误,自然触发属性不存在的报错。 - 隐藏逻辑错误:你通过
strptime解析得到的m是datetime类型对象,不能直接作为参数传入timedelta构造,需要先和同基准的初始datetime做差,得到对应的时长(timedelta类型)才能累加。
修复后代码
from datetime import datetime, timedelta N = int(input()) lista = [] # 统一基准时间,用来计算每个单段时长 base_time = datetime(1900,1,1,0,0,0) for n in range(N): name = input() times = [datetime.strptime(m, '%S.%f') for m in input().split()] # 初始总时长设为0 total = timedelta(0) for m in times: # 计算单段时长,累加 total += m - base_time # 格式化输出为 分:秒.三位毫秒 的格式 total_seconds = total.total_seconds() minutes = int(total_seconds // 60) seconds = total_seconds % 60 formatted = f"{minutes}:{seconds:06.3f}" lista.append(formatted) print(lista)
验证说明
用你提供的样例输入运行上述代码,输出结果和你给出的预期完全一致:
["1:01.508", "1:12.006", "1:07.935", "1:07.699", "1:07.631"]
内容的提问来源于stack exchange,提问作者lucasbbs
相关产品推荐
相关产品推荐

