You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python基于time、datetime库实现秒表时额外输出None值问题咨询

问题根因

1. 额外输出None的原因

Python中所有没有显式写return语句的函数,执行完默认都会返回None。
你的time_convert函数内部已经用print输出了计时时长,但调用函数时写的是print(time_convert(time_lapsed)):这行代码会先执行time_convert内部的打印逻辑输出时长,再把函数返回的None传给外层的print输出,就多出了那行多余的None。

2. 导入time相关报错的原因

  • 代码里用到的time.time()是Python标准库中独立time模块的方法,和datetime模块是平级关系,不存在从属关系。
  • 删掉首行import time后,代码运行到start_time = time.time()时找不到time模块的定义,必然触发报错。
  • 你尝试在from datetime import ...行追加导入time是逻辑错误:from 模块 import xxx只能导入对应模块下的属性、类或方法,time不在datetime模块内,这种写法根本无法导入time模块,自然解决不了问题。

隐藏逻辑bug

你代码里time_ended=datetime.now()写在了程序最开头,记录的是程序刚启动的时间,不是你按下回车停止计时的时间,会导致输出的结束时间、反推的开始时间都和实际值有偏差。另外用时间差反推开始时间的写法完全没必要,计时开始时直接调用datetime.now()记录时间,精度比反推更高,也不会出现计算误差。

修正后代码
import time
from datetime import datetime

def time_convert(sec):
  mins = sec // 60
  sec = sec % 60
  hours = mins // 60
  mins = mins % 60
  # 对秒数做两位小数截断,显示更整洁
  print("Time Lapsed = {0}:{1}:{2}".format(int(hours),int(mins),round(sec,2)))


input("Press Enter to start")
start_timestamp = time.time()
time_started = datetime.now()

input("Press Enter to stop")
end_timestamp = time.time()
time_ended = datetime.now()

time_lapsed = end_timestamp - start_timestamp
# 直接调用函数即可,不需要在外层套print
time_convert(time_lapsed)
print("Time started: ", time_started)
print("Time finished: ", time_ended)

内容的提问来源于stack exchange,提问作者Joel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 06:24:30