我是Python新手,正在尝试学习它,但有些东西现在对我来说太模糊了。我希望有人有时间为我指明正确的方向。
我想做什么?我要求某人提供三个输入,并将其全部转换为 float (因为我被告知 raw_input
具有默认值字符串)。我想像这样打印它们: hh:mm:ss
我这样做了三次:
time_to_think = float(raw_input("Enter the time you needed: "))
之后,我有一个 if 语句来检查输入是否大于 50。
一切正常,直到我需要打印它们......
所以我有这个:
if time_to_think > 50
time_to_think_sec = round(time_to_think / 1000) # this gives me the time to think in seconds
现在,最后:
print "The time needed: %.2f:%.2f:%.2f" % (time_to_think_sec, time_to_think_minutes, time_to_think_hours)
我希望输出严格为:hh:mm:ss
。但这给了我很多小数,而我只想要只有两个数字的四舍五入数字。因此,如果 time_to_think_sec = 1241414
,我希望它为 12
它必须执行以下操作:%.2f:%.2f:%.2f
,但我不知道如何解决这个问题。 %02f:%02f:%02f
没有成功...
最简单的方法是使用日期时间模块。
t=datetime.datetime.utcfromtimestamp(63101534.9981/1000)
print t
print t.strftime('%Y-%m-%d %H:%M:%S')
print t.strftime('%H:%M:%S')
结果
1970-01-01 17:31:41.534998
1970-01-01 17:31:41
17:31:41
如果您使用 fromtimestamp
而不是 utcfromtimestamp
,您可能会得到意外的小时答案,因为它与时区混淆。完整的时间戳包含年份和内容,但您可以忽略它并仅以小时为单位进行处理。否则,您必须减去纪元。
如果您想手动执行此操作,我认为您希望在四舍五入后将小时和分钟转换为 int
并使用格式代码 %02d
。如果您愿意,您可以将秒保留为 float 并使用 %02.xf
或执行 int(round(time_to_think_seconds))
time_to_think_ms=63101534.9981
time_to_think_hours=int(floor(time_to_think_ms/1000./60./60.))
time_to_think_minutes=int(floor(time_to_think_ms-time_to_think_hours*60*60*1000)/1000./60.)
time_to_think_seconds=(time_to_think_ms-time_to_think_hours*1000*60*60-time_to_think_minutes*60*1000)/1000
time_to_think_seconds_2=int(round((time_to_think_ms-time_to_think_hours*1000*60*60-time_to_think_minutes*60*1000)/1000))
print '%02d:%02d:%02.3f'%(time_to_think_hours,time_to_think_minutes,time_to_think_seconds)
print '%02d:%02d:%02d'%(time_to_think_hours,time_to_think_minutes,time_to_think_seconds_2)
结果:
17:31:41.535
17:31:42
我是一名优秀的程序员,十分优秀!