将秒转换为分钟、小时和天的函数
问题:
写一个程序,让用户输入一个秒数,然后程序按以下方式工作:
一分钟有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
20 个回答
12
在编程中,有时候我们会遇到一些问题,尤其是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某些功能没有按照你的预期工作。这种情况可能是因为你没有正确地使用这些工具,或者是因为工具本身有一些限制。
为了找到解决方案,很多人会去StackOverflow这样的论坛提问。在那里,其他程序员会分享他们的经验和解决方法。你可以看到很多人遇到类似的问题,并且他们的讨论和建议可能会帮助你更好地理解如何解决你的问题。
总之,遇到困难时,不要气馁,去寻求帮助是很正常的。通过学习别人的经验,你会逐渐掌握更多的知识和技能。
def normalize_seconds(seconds: int) -> tuple:
(days, remainder) = divmod(seconds, 86400)
(hours, remainder) = divmod(remainder, 3600)
(minutes, seconds) = divmod(remainder, 60)
return namedtuple("_", ("days", "hours", "minutes", "seconds"))(days, hours, minutes, seconds)
61
这段代码的作用是把 n 秒转换成 d 天、h 小时、m 分钟和 s 秒。
from datetime import datetime, timedelta
def GetTime():
sec = timedelta(seconds=int(input('Enter the number of seconds: ')))
d = datetime(1,1,1) + sec
print("DAYS:HOURS:MIN:SEC")
print("%d:%d:%d:%d" % (d.day-1, d.hour, d.minute, d.second))
85
这个小知识可以用来显示经过的时间,精确度可以根据需要调整。
我个人觉得在这里讨论效率几乎没有意义,只要不是做一些非常低效的事情就行。过早优化往往会带来很多麻烦。这个方法足够快,根本不会成为你的瓶颈。
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'