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

CS50p PSet4 Adieu程序遇EOF退出码异常求助

问题解决:CS50p Adieu练习check50 EOF退出码错误

问题根源

  1. 依赖库缺失导致启动异常:代码中保留了本地测试用的from icecream import ic,但check50运行环境未安装icecream库,程序启动时直接抛出ImportError,异常退出后返回码为1。
  2. 输出逻辑错误:print(txt)被嵌套在for循环内部,每拼接一个名字就打印一次,不符合题目要求的单次输出格式。

修正后的代码

def main():
    names = []
    txt = "Adieu, adieu, to"
    while True:
        try:
            names.append(input())
        except EOFError:
            if len(names) == 1:
                txt += f" {names[0]}"
            elif len(names) == 2:
                txt += f" {names[0]} and {names[1]}"
            elif len(names) > 2:
                txt += " " + ", ".join(names[:-1]) + ", and " + names[-1]
            
            if names:
                print(txt)
            break

main()

修正说明

  • 移除了仅用于本地测试的icecream和sys导入语句,消除启动时的导入错误。
  • 重构名字拼接逻辑,针对不同数量的名字生成符合要求的格式:
    • 1个名字:直接拼接
    • 2个名字:用and连接
    • 3个及以上:前面名字用逗号分隔,最后一个用, and连接
  • 仅当存在输入名字时才打印结果,避免无输入时输出无效文本。
  • 程序遇到EOF时会正常处理并退出,返回码为0,符合check50的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:32:33