【问题标题】:What is this exercise meaning in Thinkpython 2e?Think Python 2e 中这个练习的意义是什么?
【发布时间】:2016-12-06 14:55:14
【问题描述】:

time 模块提供了一个函数,也称为 time ,它返回“纪元”中的当前格林威治标准时间,这是一个任意时间,用作参考 点。在 UNIX 系统上,纪元是 1970 年 1 月 1 日。

> import time 
> time.time()
1437746094.5735958

编写一个脚本,读取当前时间并将其转换为以小时、分钟和秒为单位的一天中的时间,加上自纪元以来的天数。

我看不出这个练习如何与第 5 章联系起来。条件和递归以及如何编写代码来实现这一点?

想回答我的问题。 所以,按照你的建议,我写了一段这样的代码:

import time

secs = time.time()

def time():
    mins = secs / 60
    hours = mins / 60
    days = hours/24
    print 'The minues:',mins,'The hours:' ,hours, 'The days:',days

print 'The seconds:', secs, time()

它输出如下结果: 秒数:1481077157.6 分钟数:24684619.2933 小时数:411410.321554 天数:17142.0967314 我的问题是“无”从何而来?

【问题讨论】:

  • 不管是否与当前章节相关,你能展示一下你到目前为止所做的尝试吗?
  • 根据 docs.python.org/3/library/time.html#time.timetime.time() 返回自 EPOCH 以来的秒数。该练习希望您将其转换为日期。
  • 这个算法可以递归写,没问题。这很奇怪而且毫无意义,但也许纯粹为了练习它有一些价值。所以也许除了学习语法和一些基本的算法思维之外别无他法。恕我直言,这样做没有实际理由,但可能作者应该是回答这个问题的人。看着这本书,我猜它希望你像5.8 中显示的countdown 那样做。
  • 我很确定最近已经涵盖了整数除法和“模”...

标签: python


【解决方案1】:
import time

def current_time():
    current=time.time()
    t_sec = current % 86400
    c_hours = int(t_sec/3600)
    t_minutes = int(t_sec/60)
    c_mins = t_minutes % 60
    c_sec = int(t_sec % 60)

    days=int(current/86400)

    print("The Current time is",c_hours,':',c_mins,':',c_sec)
    print('Days since epoch:', days)

【讨论】:

  • 如果您可以添加评论来解释您的答案,那就太好了。
  • 欢迎来到 Stack Overflow!请尝试对您的解决方案如何工作提供一个很好的描述。请参阅:How do I write a good answer? 谢谢
【解决方案2】:
>import time
>epoch=time.time()

>#60*60*24=86400
>total_sec = epoch % 86400
>#60*60
>hours = int(total_sec/3600)
>total_minutes = int(total_sec/60)
>mins = total_minutes % 60
>sec = int(total_sec % 60)

>days=int(epoch/86400)

>print("The Current time is",hours,':',mins,':',sec)
>print("Days since epoch:", days)

【讨论】:

  • 请添加有关您的答案的一些详细信息,例如为什么有效、提问者犯了什么错误以及如何纠正。没有任何讨论或细节的代码对于最初不知道哪里出了问题的人来说几乎没有任何意义。请填写您的答案!谢谢!
  • 检查一次
【解决方案3】:

编辑回应:“我的问题是“无”来自哪里?”

在最后的打印函数中,您调用了“time()”,但没有返回任何内容,因此它会打印“无”。 如果你想'None'消失,试试这个:

import time

secs = time.time()

def time():
  mins = secs / 60
  hours = mins / 60
  days = hours/24
  print ('The minues:',mins,'The hours:' ,hours, 'The days:',days)

time()
print ('The seconds:', secs)

虽然重点应该是,如果你想使用递归函数,你应该返回一些你用来计算的东西。


我们看一下练习说明:

编写一个脚本,读取当前时间并将其转换为以小时、分钟和秒为单位的一天中的时间,加上自纪元以来的天数。

我对这个问题的理解是,答案的格式应该是这样的:

Today is 18 hours, 12 minutes, 11 seconds and 18404 days since epoch. 

要得到这个答案,您可以使用一个使用“模运算符”的函数,它是第 5.1 段的一部分。然后,您可以用天数减去包含“今天”的变量,然后是小时、分钟和秒。这在某种程度上是一个递归过程,可以帮助您理解后续练习。

【讨论】:

    【解决方案4】:
    import time
    
    #the epoch time
    epoch = int(time.time())
    
    #calculate number of days since epoch
    days = epoch / (60 * 60 * 24)
    hour = days % int(days) * 24
    min  = hour % int(hour) * 60
    sec  = min % int(min) * 60
    
    print(f"Days since epoch: {int(days)}\nCurrent Time: {int(hour)}:{int(min)}:{int(sec)}")
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2016-01-16
      相关资源
      最近更新 更多