Python时间递增问题求助:每180次递增1小时功能未生效
问题分析与修复方案
核心问题
你的代码里有三个关键问题导致时间始终不变:
neat_time在循环外面只计算了一次,后面循环打印的都是同一个固定时间- 代码里的
ihour变量根本没定义,运行时会直接报错 - 剩余值的计算逻辑错了,
c - 180不符合你想要的输出结果
修复后的代码
from datetime import datetime, timedelta def hourly_time_formula(self): c = self.cases # 初始化第一次要显示的时间:当前时间加1小时 current_time = datetime.now() + timedelta(hours=1) if c > 180: while c >= 180: c -= 180 # 把时间格式化成12小时制带am/pm,和你示例的格式对齐 neat_time = current_time.strftime("%I:%M%p").lower() print(f"{c} should be remaining at {neat_time}") # 每次循环后把时间再加1小时 current_time += timedelta(hours=1)
修改要点说明
- 动态更新时间:把时间变量放到循环逻辑里,每次循环都给时间加1小时,这样打印的时间才会逐次递增
- 修正剩余值计算:直接用递减后的
c作为剩余值,刚好匹配你示例里的输出逻辑 - 调整时间格式:用
%I输出12小时制的小时数,%p获取上午/下午标识,转小写后和你给的示例格式一致 - 清理无效代码:删掉没定义的
ihour +=1,直接操作时间变量更直观
测试效果
当self.cases=540,当前时间是下午1:00时,输出会和你预期的一样:
360 should be remaining at 02:00pm
180 should be remaining at 03:00pm
0 should be remaining at 04:00pm
内容的提问来源于stack exchange,提问作者C R E
相关产品推荐
相关产品推荐

