python44讲
import time as tclass MyTimer:
def __str__(self):
return self.prompt
__repr__ = __str__
#开始计时
def start(self):
self.begin = t.localtime()
print('开始计时...')
#停止计时
def stop(self):
self.end = t.localtime()
self._calc()
print('停止计时')
#内部方法,计算运行时间
def _calc(self):
self.lasted = []
self.prompt = '总共运行'
for index in range(6):
self.lasted.append(self.end - self.begin)
self.prompt += str(self.lasted)
问题:不显示运行时间 解答:代码问题与修正方案
你的代码存在三个主要问题:
[*]问题1:使用 t.localtime() 记录时间(返回结构化时间对象,无法直接相减)
[*]问题2:self.lasted = 未初始化且未正确计算时间差
[*]问题3:self.prompt 字符串拼接逻辑错误
修正后的完整代码
import time as t
class MyTimer:
def __str__(self):
return self.prompt
__repr__ = __str__
def start(self):
self.begin = t.time()# 改用时间戳
print('开始计时...')
def stop(self):
self.end = t.time() # 改用时间戳
self._calc()
print('停止计时')
def _calc(self):
# 计算时间差(秒为单位)
lasted_seconds = self.end - self.begin
# 转换为时分秒格式
hours = lasted_seconds // 3600
minutes = (lasted_seconds % 3600) // 60
seconds = lasted_seconds % 60
# 生成易读提示
self.prompt = f"总共运行了{int(hours)}小时{int(minutes)}分{seconds:.2f}秒"
改进说明
[*]改用 t.time() 记录时间戳,支持直接相减计算差值
[*]通过 divmod 计算时分秒,避免直接操作 struct_time 的复杂性
[*]使用 f-string 格式化输出结果,代码更简洁易读
(调用示例:timer = MyTimer() → timer.start() → 执行被测代码 → timer.stop() → print(timer))
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 player-none 于 2025-4-25 17:25 编辑
import time as t
class MyTimer:
#上面两个方法没有必要
#开始计时
def start(self):
self.begin = t.time()
print('开始计时...')
#停止计时
def stop(self):
self.end = t.time()
self._calc()
print('停止计时')
#内部方法,计算运行时间
def _calc(self):
prompt = f'总共运行{self.end - self.start}秒'
print(prompt) player-none 发表于 2025-4-25 17:23
我跟着视频打的代码,他是有问题吗,还是什么其他原因 追逐我的明天 发表于 2025-4-25 17:34
我跟着视频打的代码,他是有问题吗,还是什么其他原因
估计是你应该在执行完所有命令之后加一行print(变量名),你忘加了(time.localtime用法我不太清楚)
我的代码能正确执行吗 player-none 发表于 2025-4-25 17:40
估计是你应该在执行完所有命令之后加一行print(变量名),你忘加了(time.localtime用法我不太清楚)
...
"D:\python\044\微信图片_20250425193321.png" 追逐我的明天 发表于 2025-4-25 19:35
图片一直在转,显示不出来 本帖最后由 jackz007 于 2025-4-25 22:39 编辑
代码没有问题,只需要加上对象定义、方法调用、信息显示等代码即可看到效果
# 以下是楼主的代码
import time as t
class MyTimer:
def __str__(self):
return self.prompt
__repr__ = __str__
#开始计时
def start(self):
self.begin = t.localtime()
print('开始计时...')
#停止计时
def stop(self):
self.end = t.localtime()
self._calc()
print('停止计时')
#内部方法,计算运行时间
def _calc(self):
self.lasted = []
self.prompt = '总共运行'
for index in range(6):
self.lasted.append(self.end - self.begin)
self.prompt += str(self.lasted)
# 以下是新添加的代码
r = MyTimer()
r . start()
t . sleep(10)
r . stop()
print(r . prompt)
把上面的代码保存为文件 "mt.py"
【运行实况】:
D:\\>python mt.py
开始计时...
停止计时
总共运行0000010
D:\\>
页:
[1]