有没有更好的方法来解决问题,将秒转换为天、分钟和小时



我想将秒作为输入,并将其转换为天、小时、分钟和秒。条件是,如果其中任何一个为0,则不应显示。

示例:输入:86400输出:1 Days

输入:90输出:1 Minutes 30 Seconds

输入:5400输出:1 Hours 30 Minutes

注意,如果小时、分钟等的值为零,则它们不会被重新显示。

我已经这样解决了,但我想知道是否有更有效的方法。

seconds = int(input())
if seconds <= 60:
print(f'{seconds} Seconds')
elif seconds > 60 and seconds < 3600:
minutes = seconds // 60
seconds = seconds % 60
print(f'{minutes} Minutes {seconds} Seconds')
elif seconds == 3600:
print("1 Hours")
elif seconds > 3600 and seconds < 86400:
minutes = seconds // 60
seconds = seconds % 60
hours = minutes // 60
minutes = minutes % 60
if minutes > 0 and seconds > 0:
print(f'{hours} Hours {minutes} Minutes {seconds} Seconds')
elif minutes > 0:
print(f'{hours} Hours {minutes} Minutes')
elif seconds > 0:
print(f'{hours} Hours {seconds} Seconds')
elif seconds == 86400:
print("1 Days")
elif seconds > 86400:
minutes = seconds // 60
seconds = seconds % 60
hours = minutes // 60
minutes = minutes % 60
days = hours // 24
hours = hours - (days * 24)
if seconds > 0 and minutes > 0 and hours > 0:
print(f'{days} Days {hours} Hours {minutes} Minutes {seconds} Seconds')
elif minutes > 0 and hours > 0:
print(f'{days} Days {hours} Hours {minutes} Minutes')
elif minutes > 0 and seconds > 0:
print(f'{days} Days {hours} Minutes {seconds} Seconds')
elif hours > 0 and seconds > 0:
print(f'{days} Days {hours} Hours {seconds} Seconds')
elif hours > 0:
print(f'{days} Days {hours} Hours')
elif minutes > 0:
print(f'{days} Days {minutes} Minutes')
elif seconds > 0:
print(f'{days} Days {seconds} Seconds')

试试这个:

def time_converter(seconds):
units = {'day': 86400, 'hour': 3600, 'min': 60}
# Get days
days = int(seconds / units['day'])
seconds = seconds % units['day']
# Get hours
hours = int(seconds / units['hour'])
seconds = seconds % units['hour']
# Get minutes
minutes = int(seconds / units['min'])
seconds = seconds % units['min']
# Compile output
output = f'{days} Days ' if days > 0 else ''
output += f'{hours} Hours ' if hours > 0 else ''
output += f'{minutes} Minutes ' if minutes > 0 else ''
output += f'{seconds} Seconds ' if seconds > 0 else ''
print(output)

time_converter(86400)  # 1 Days
time_converter(90)  # 1 Minutes 30 Seconds
time_converter(5400)  # 1 Hours 30 Minutes

首先除以得到天数,然后使用模得到剩余的秒数,并重复计算小时数,等等。现在我想知道是否有办法让它更小。。。

最新更新