字符串转float失败,终端运行正常但check50检测输出为空求助
问题分析与解决方案
你的代码存在两个核心问题,导致check50检测失败:
abc_to_def函数逻辑错误:该函数没有返回计算后的浮点时间值,而是返回原字符串,后续的比较变成了字符串比对,和数值大小的判断逻辑完全不符。- 字符串比较的逻辑错误:字符串是按字符ASCII码逐位比较的,比如
"8:00"作为字符串会比"8.0"大,但实际数值是相等的,这会导致本该触发的条件无法满足,输出为空。
修改后的完整代码
def main(): x = abc_to_def(input("What time is it? ")) if 7.0 <= x <= 8.0: print("breakfast time") elif 12.0 <= x <= 13.0: print("lunch time") elif 18.0 <= x <= 19.0: print("dinner time") else: print() def abc_to_def(p): hours, minutes = p.split(":") return int(hours) + int(minutes) / 60.0 if __name__ == "__main__": main()
关键修改点说明
- 修复
abc_to_def函数:删除多余的if判断,直接将小时和分钟转换为总小时数的浮点值返回(比如输入7:30返回7.5,8:00返回8.0)。 - 修改比较逻辑:将
main函数中字符串形式的数值(如"7.0")改为浮点数值(如7.0),确保是数值大小的比对,而非字符串比对。 - 消除潜在错误:原代码中
if判断会导致输入0:00时函数返回None,触发类型错误,修改后所有合法带冒号的时间输入都能正确返回浮点值。
内容的提问来源于stack exchange,提问作者andrew_h
相关产品推荐
相关产品推荐

