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

CS50 Pset1 Meal Time代码本地测试正常但check失败求助

CS50 Meal Time 作业检查失败的解决方法

问题原因

你的代码仅支持不带AM/PM的24小时制时间输入(比如7:00、13:30),但CS50的测试用例包含了12小时制带AM/PM的输入(比如7:00 AM、1:00 PM)。当输入这类时间时,split(":")会得到类似["7", "00 AM"]的结果,尝试把"00 AM"转成float时会触发ValueError,直接导致检查失败。

解决方案

修改输入处理逻辑,先分离并处理AM/PM标记,将12小时制时间转换为24小时制后,再进行十进制转换和餐点判断。

修改后的代码

def main():
    # 处理输入,分离AM/PM标记
    time_str = input("Time: ").strip()
    period = ""
    if "AM" in time_str or "PM" in time_str:
        time_str, period = time_str.split()
    
    # 拆分小时和分钟
    time_input = time_str.split(":")
    time = convert(time_input, period)

    # 判断并输出对应餐点时间
    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(t, period):
    hour = float(t[0])
    # 12小时制转24小时制逻辑
    if period == "PM":
        if hour != 12:
            hour += 12
    else:  # AM时段处理
        if hour == 12:
            hour = 0
    
    minute = float(t[1]) / 60
    return hour + minute

if __name__ == "__main__":
    main()

关键测试验证点

  • 输入12:00 AM会转换为0.0,不属于任何餐点时间
  • 输入12:30 PM会转换为12.5,属于午餐时间
  • 输入7:00 PM会转换为19.0,属于晚餐时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:20:50