Python时间范围判断异常:边界值未触发预期输出问题排查
问题修复:输入结束时间(如8:00)无法输出对应餐点时间
你的代码核心问题是没有调用convert函数处理输入时间,直接拿字符串做比较导致逻辑失效。用户输入的是"8:00"这类格式,和"8.0"做字符串比较时,由于:的ASCII码小于.,会判定"8:00" < "8.0",导致time <= "8.0"的条件不成立,自然不会输出早餐时间。
只需在main函数里调用convert把输入转成数值型时间,再做范围判断就能解决问题:
def main(): # assume user input will be formatted in 24-hour time as #:## or ##:## input_time = input("What is the time: ") # 调用convert转换时间为以小时为单位的浮点数 time = convert(input_time) if 7.0 <= time <= 8.0: print("breakfast time") elif 12.0 <= time <= 13.0: print("lunch time") elif 18.0 <= time <= 19.0: print("dinner time") def convert(time): h, m = time.split(":") time = float(((float(h) * 60) + float(m)) / 60) return time if __name__ == "__main__": main()
关键修改说明:
- 将用户输入的原始字符串传给
convert函数,转换成以小时为单位的浮点数(比如8:00会被转为8.0) - 用数值比较替代字符串比较,确保区间的起始和结束值都能被正确匹配
现在测试输入8:00,转换后得到8.0,满足7.0 <= time <= 8.0的条件,就会正常输出breakfast time了。
内容的提问来源于stack exchange,提问作者sandramsc
相关产品推荐
相关产品推荐

