了解Allen Downey的“思考Python”第5.14节练习1

2024-04-19 12:41:43 发布

您现在位置:Python中文网/ 问答频道 /正文

链接到练习可以访问这里-Section 5.14 Exercise #1

引用问题:

Exercise 1
...

Write a script that reads the current time and converts it to a time of day in hours, minutes, and seconds, plus the number of days since the epoch.

这里有一个可能的解决方案-Solution

上面提供的解决方案似乎很容易理解,但我对将历元时间转换为一天中正常时间的计算/公式感到困惑。这些台词让我最困惑:

hours = (epoch % seconds_in_a_day) // seconds_in_an_hour + 8
minutes = (epoch % seconds_in_a_day) % seconds_in_an_hour // seconds_in_a_minute
seconds = (epoch % seconds_in_a_day) % seconds_in_an_hour % seconds_in_a_minute

我的问题是,为什么将seconds_in_a_day除以epoch的余数除以seconds_in_an_hour,然后将8加到结果中。我对minutesseconds变量也有类似的混淆。我正试图理解这种计算背后的逻辑,但它相当混乱。你知道吗


Tags: andoftheinantime时间解决方案
2条回答

我也一直在努力学习一些python代码,今天我遇到了这个问题。这是我的尝试

total_secs  = time.time()
seconds = total_secs % 60
minutes = (total_secs // 60) % 60
hours = (total_secs // 3600) % 24
days = total_secs // (3600 * 24)

这背后的逻辑是,seconds是总秒数除以一分钟内秒数的余数,minutes是总分钟数除以一小时内分钟数的余数,通过这个逻辑我们可以以相同的方式得到hoursdays。你知道吗

代码更易于阅读和理解,希望它能为以后阅读本文的python初学者消除一些困惑。你知道吗

因为从1970开始,epoch总共是秒,所以我们只想观察今天经过的秒数。这给出了每个公式的第一部分(epoch % seconds_in_a_day)。你知道吗

既然我们有今天已经过去的秒数,我们可以用它除以一小时内的秒数,得到小时数。因为北京的时区是UTC+8,所以这里加上了8。你知道吗

因为我们在一天中也有几秒钟,我们在几小时和几秒钟内重复几天的逻辑。如果我们知道从今天开始已经过了n秒,我们可以将这个时间除以一个小时内的秒数,得到最后一个非完整小时内经过的秒数的“余数”。现在我们把它除以seconds_in_a_minute,把秒变成分钟。你知道吗

同样的逻辑也适用于秒。你知道吗

相关问题 更多 >