You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发餐次时间计算器报NoneType与float比较TypeError错误如何解决

报错原因及修复方案

你遇到的TypeError: '>=' not supported between instances of 'NoneType' and 'float'和x的类型转换时机无关,是代码里的逻辑错误导致eat()函数返回了None,用None和浮点数做比较触发了报错。

具体错误点

  • eat()函数的条件判断写法错误:x.endswith("am")返回的是布尔值True/False,你写的if x == x.endswith("am")相当于拿字符串和布尔值做相等判断,永远不会成立,两个分支都走不到,函数没有明确返回值就会默认返回None。
  • 12小时制转24小时制逻辑缺失:pm时段的时间需要在小时基础上加12,否则7pm转换后和7am数值相同,无法正确区分早晚时段。
  • 主函数的时间范围判断逻辑写反:比如0.0>=eat(time)<=1.0实际是判断时间既小于等于0又小于等于1,永远不会成立,午饭对应12-13点、晚饭对应18-19点才符合常规时段设定。
  • 代码缩进不规范:你粘贴的代码里time = input(...)行、eat()函数内的注释缩进都不符合Python语法要求,运行会先报缩进错误。

修复后可运行代码

def main():
    time = input("What time is it? ")
    t = convert(time)
    if 7.0 <= t <= 8.0:
        print("Breakfast")
    elif 12.0 <= t <= 13.0:
        print("Lunch")
    elif 18.0 <= t <= 19.0:
        print("Dinner")

def convert(x):
    # 处理am时段
    if x.endswith("am"):
        x = x.replace("am", "").strip()
        hours, minutes = x.split(":")
        return float(hours) + float(minutes)/60
    # 处理pm时段
    elif x.endswith("pm"):
        x = x.replace("pm", "").strip()
        hours, minutes = x.split(":")
        hours = float(hours)
        # 12pm对应正午12点,不用加12
        if hours != 12:
            hours += 12
        return hours + float(minutes)/60

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者user17391478

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:05