Python中不使用if语句实现Time对象时间比较的is_after函数编写
无if分支实现is_after的方案
核心思路:将时分秒的时间分量按固定权重折算为统一尺度的总秒数,利用Python比较表达式原生返回布尔值的特性,直接完成判断,全程不需要任何if分支语句。
- 固定权重换算规则:1小时等价于3600秒,1分钟等价于60秒,两个时间的先后关系,和它们折算后的总秒数的大小关系完全等价
- Python的比较操作(如
>、<)执行后会直接返回布尔类型的True/False,不需要额外用if语句做分支包装
改造后的可运行代码:
class Time: def __init__(self, hour, min, sec): self.hour = hour self.min = min self.sec = sec def is_after(t1, t2): t1_total_sec = t1.hour * 3600 + t1.min * 60 + t1.sec t2_total_sec = t2.hour * 3600 + t2.min * 60 + t2.sec return t1_total_sec > t2_total_sec
你最初编写的嵌套if逻辑,本质是按小时、分钟、秒的优先级逐位对比大小,折算总秒数的方法是把这套逐位对比的逻辑合并成单次数值比较,判断结果和原代码完全一致,不存在逻辑偏差,同时完全满足题目“禁止使用if语句”的要求。
内容的提问来源于stack exchange,提问作者Jenkins
相关产品推荐
相关产品推荐

