Python实现时间点选择及时分秒先后比较功能代码咨询
时间先后比对完整实现代码
实现说明
- 直接使用给定的10个固定时间元组,替换原代码中的随机生成逻辑
- 支持输入
#序号格式选择两个时间点,自带输入合法性校验 - 严格按照「小时优先→小时相同比分钟→分钟相同比秒」的if判断逻辑比对时间先后
- 时间输出完全匹配要求的
print([dt.strftime('%H:%M:%S') for dt in dts])格式
from datetime import time # 固定使用给定的10个时间元组,对应展示序号1-10 moments = [ (6, 14, 39), (16, 4, 22), (14, 31, 3), (9, 27, 56), (17, 1, 33), (15, 10, 42), (7, 53, 47), (18, 11, 6), (8, 22, 45), (12, 32, 42) ] # 打印所有可选时间供用户参考 print("可选时间列表(序号: 时:分:秒):") for idx, (h, m, s) in enumerate(moments, start=1): print(f"#{idx}: {h:02d}:{m:02d}:{s:02d}") # 循环接收输入直到格式合法 while True: input_str = input("\n请输入两个要比对的时间序号,用空格分隔,例如#3 #5:").strip() inputs = input_str.split() # 校验输入格式 if len(inputs) != 2 or not all(i.startswith('#') and i[1:].isdigit() for i in inputs): print("输入格式错误,请按#序号 #序号的格式输入") continue idx1 = int(inputs[0][1:]) - 1 idx2 = int(inputs[1][1:]) - 1 # 校验序号范围 if not (0 <= idx1 < len(moments) and 0 <= idx2 < len(moments)): print(f"序号超出范围,请输入1到{len(moments)}之间的序号") continue if idx1 == idx2: print("请选择两个不同的时间点") continue break t1 = moments[idx1] t2 = moments[idx2] h1, m1, s1 = t1 h2, m2, s2 = t2 # 按要求用if条件逐层比对时间先后 earlier = None if h1 < h2: earlier = t1 elif h1 > h2: earlier = t2 else: # 小时一致,比对分钟 if m1 < m2: earlier = t1 elif m1 > m2: earlier = t2 else: # 分钟一致,比对秒 if s1 < s2: earlier = t1 else: earlier = t2 # 按要求格式构造time对象列表并输出 dts = [time(h, m, s) for h, m, s in [t1, t2, earlier]] print("\n所选两个时间、其中更早的时间依次为:") print([dt.strftime('%H:%M:%S') for dt in dts])
关键逻辑说明
- 输入处理做了三层校验:格式是否符合
#数字要求、序号是否在1-10范围内、是否选择重复时间,避免运行报错 - 时间比对完全使用if分支逐层判断,没有依赖Python元组默认的按位比较特性,完全匹配指定比对规则
- 输出环节先把时间元组转为
datetime.time对象,再用要求的列表推导+strftime格式输出,和指定输出代码格式完全一致 - 原代码中
sorted_moments < sorted(moments)为笔误,本实现不需要随机生成、排序逻辑,已直接移除
内容的提问来源于stack exchange,提问作者Kamel Awad
相关产品推荐
相关产品推荐

