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

Python程序报错'float' has no attribute 'split',求解决(用餐时间判断)

问题排查与修正

错误原因

报错'float' has no attribute 'split'的直接原因:你在主代码中已经将hours和minutes转换为float数值类型,但在convert函数里却试图对这两个数值调用字符串的split()方法——数值类型根本没有这个方法,自然会报错。

另外代码还有两处逻辑问题:

  • 注释里想把分钟转成小时小数部分,但用minutes*10**-2是错误的(比如30分钟会变成0.3,实际应该是0.5)
  • 原判断条件里的分钟范围写法.0 <= minutes <= .59不符合实际,分钟的取值范围是0-59,不是0.0-0.59

修正后的代码

time = input("What time is it? ")
time = time.strip()
hours, minutes = time.split(":")
hours = float(hours)
minutes = float(minutes)

def convert(hours, minutes):
    # 将分钟转换为小时的小数部分(比如30分钟=0.5小时)
    total_hours = hours + minutes / 60

    if 7 <= total_hours < 9:
        print("breakfast time")
    elif 12 <= total_hours < 13:
        print("lunch time")
    elif 18 <= total_hours < 19:
        print("dinner time")

convert(hours, minutes)

改动说明

  1. 删掉函数内错误的split()调用:传入的hours和minutes已经是拆分好的数值,无需再处理字符串拆分
  2. 正确转换分钟为小时小数:用minutes / 60计算,比如59分钟≈0.983小时
  3. 合并为总小时数判断:直接用total_hours判断时段,逻辑更简洁准确,比如8:59的总小时数是8.983,仍在7-9范围内,符合早餐时段;9:00的总小时数是9,不在范围内
  4. 改用elif替代多个if:避免多个条件同时触发(虽然原逻辑不会,但更规范)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:35:13