【发布时间】:2023-03-10 00:55:01
【问题描述】:
我有一个函数可以将秒返回天、小时、分钟和秒。但我需要但是,如果输出为 0,则不打印。例如,如果我输入 176400 秒,我希望输出为“2 天 1 小时”而不是“2 天、2 小时、0 分钟、0 秒”。
到目前为止我做到了:
sec = int(input("Enter time in Seconds: "))
temp = sec
day = sec // 86400
sec %= 86400
hour = sec // 3600
sec %= 3600
mins = sec // 60
sec %= 60
if day >= 1:
print(f'time in minutes is {day}days {hour}hour {mins}min {sec}sec')
elif hour >= 1:
if mins == 0 and sec == 0:
print(f'time in minutes is {hour}hour')
elif mins == 0:
print(f'time in minutes is {hour}hour {sec}sec')
elif sec == 0:
print(f'time in minutes is {hour}hour {mins}min')
else:
print(f'time in minutes is {hour}hour {mins}min {sec}sec')
elif mins >= 1:
if sec == 0:
print(f'time in minutes is {mins}min')
else:
print(f'time in minutes is {mins}min {sec}sec')
elif sec >= 1:
print(f'time sec == {sec} sec')
我可以继续这段代码使用一堆“if”语句,但有更短的方法吗?
【问题讨论】:
-
试着更清楚地思考你的预期逻辑。你可能会发现拿一支真正的铅笔和一张纸,然后画一个流程图很有帮助。也就是说,关于以更短或更“更优雅”的方式做事的问题通常不在此处讨论。如果代码已经正常工作,您可能想尝试codereview.stackexchange.com。
-
题外话,但您可以使用
divmod()来简化数学运算,例如day, sec = divmod(sec, 86400)
标签: python datetime converters