Python计算时间差结果错误,如何通过运算得到正确差值?
时间差计算修复方案
核心错误点
- 绝对值调用错误:Python 计算绝对值的语法为
abs(数值),原代码错误对math.abs赋值,逻辑完全不成立 - 缺少分钟借位处理:当结束时间的分钟数小于开始时间的分钟数时,需要从小时位借1小时(等价60分钟)补充到分钟位,同时小时差值减1,否则就会出现类似13:05减12:55得到1小时50分的错误。
最优修复思路
直接把两个时间统一转换为从0点开始的总分钟数,做差取绝对值后再拆分回小时和分钟,逻辑简单无额外判断,不容易出错。
可直接运行的修复后代码
# 输入格式为HHMM格式的整数,例:输入1255代表12点55分 numA = int(input("A departs at: ")) numB = int(input("B departs at: ")) # 转换为总分钟数计算 total_min_a = (numA // 100) * 60 + numA % 100 total_min_b = (numB // 100) * 60 + numB % 100 diff_total = abs(total_min_b - total_min_a) differenceH = diff_total // 60 differenceM = diff_total % 60 print(differenceH, differenceM)
保留原拆分计算逻辑的修复版本
如果你不想改动原有拆分小时、分钟的结构,可以补充借位判断:
numA = int(input("A departs at: ")) numAhours = numA // 100 numAminutes = numA % 100 numB = int(input("numB departs at: ")) numBhours = numB // 100 numBminutes = numB % 100 diff_h = numBhours - numAhours diff_m = numBminutes - numAminutes # 分钟为负时做借位处理 if diff_m < 0: diff_m += 60 diff_h -= 1 differenceH = abs(diff_h) differenceM = abs(diff_m) print(differenceH, differenceM)
内容的提问来源于stack exchange,提问作者user17144102
相关产品推荐
相关产品推荐

