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)
改动说明
- 删掉函数内错误的
split()调用:传入的hours和minutes已经是拆分好的数值,无需再处理字符串拆分 - 正确转换分钟为小时小数:用
minutes / 60计算,比如59分钟≈0.983小时 - 合并为总小时数判断:直接用
total_hours判断时段,逻辑更简洁准确,比如8:59的总小时数是8.983,仍在7-9范围内,符合早餐时段;9:00的总小时数是9,不在范围内 - 改用
elif替代多个if:避免多个条件同时触发(虽然原逻辑不会,但更规范)
内容的提问来源于stack exchange,提问作者jackwbr
相关产品推荐
相关产品推荐

