将秒转换为分钟、小时和天的函数

新手上路,请多包涵

问题:编写一个程序,要求用户输入秒数,程序如下:

  • 一分钟有 60 秒。如果用户输入的秒数大于或等于 60,则程序应显示该秒数中的分钟数。

  • 一小时有3600秒。如果用户输入的秒数大于或等于 3600,程序应以该秒数显示小时数。

  • 一天有86400秒。如果用户输入的秒数大于或等于 86400,程序应以该秒数显示天数。

到目前为止我所拥有的:

 def time():
    sec = int( input ('Enter the number of seconds:'.strip())
    if sec <= 60:
        minutes = sec // 60
        print('The number of minutes is {0:.2f}'.format(minutes))
    if sec (<= 3600):
        hours = sec // 3600
        print('The number of minutes is {0:.2f}'.format(hours))
    if sec <= 86400:
        days = sec // 86400
        print('The number of minutes is {0:.2f}'.format(days))
    return

原文由 yoyoyo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 605
1 个回答

这个花絮对于以不同的粒度显示经过的时间很有用。

我个人认为效率问题在这里几乎没有意义,只要不做一些效率极低的事情。过早的优化是很多罪恶的根源。这足够快,它永远不会成为你的瓶颈。

 intervals = (
    ('weeks', 604800),  # 60 * 60 * 24 * 7
    ('days', 86400),    # 60 * 60 * 24
    ('hours', 3600),    # 60 * 60
    ('minutes', 60),
    ('seconds', 1),
)

def display_time(seconds, granularity=2):
    result = []

    for name, count in intervals:
        value = seconds // count
        if value:
            seconds -= value * count
            if value == 1:
                name = name.rstrip('s')
            result.append("{} {}".format(value, name))
    return ', '.join(result[:granularity])

..这提供了不错的输出:

 In [52]: display_time(1934815)
Out[52]: '3 weeks, 1 day'

In [53]: display_time(1934815, 4)
Out[53]: '3 weeks, 1 day, 9 hours, 26 minutes'

原文由 Mr. B 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题