Python中将秒转换为天时分秒且不输出0值单位的简化实现方法
简化实现方案
你可以通过预定义单位映射+遍历过滤的方式完全替代多层if判断,代码量大幅减少同时可扩展性更强:
total_sec = int(input("Enter time in Seconds: ")) # 按从大到小的顺序定义单位和对应秒数 units = [(86400, 'day'), (3600, 'hour'), (60, 'min'), (1, 'sec')] res = [] left = total_sec for sec_cnt, unit in units: val = left // sec_cnt if val: # 不需要单复数的话直接写 f"{val} {unit}" 即可 res.append(f"{val} {unit}{'s' if val > 1 else ''}") left %= sec_cnt print(f"time is {' '.join(res)}")
逻辑说明
- 预先把时间单位和对应的秒数按从大到小的顺序存在列表里,后续如果要新增周、月等更大单位,直接在列表开头加对应配置即可,不需要修改核心逻辑
- 遍历单位列表计算每个单位对应的数值,只把数值大于0的项加入结果列表
- 最后把结果列表拼接成字符串输出,自动跳过所有0值单位
比如输入176400秒时,运行后输出为2 days 1 hour,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Aky
相关产品推荐
相关产品推荐

