CS50P Felipe’s Taqueria项目:EOF输入致程序异常退出问题
问题原因与解决方案
你遇到的退出码错误,核心原因是程序未处理EOFError异常。
在Python中,使用input()函数读取输入时,若输入流提前结束(比如CS50平台通过Ctrl+D触发EOF),解释器会抛出EOFError。如果代码没有捕获这个异常,程序会直接终止并返回非0的退出码——这和平台要求的正常退出(退出码0)不符,因此报错。本地运行正常是因为你通常通过手动输入内容后按回车结束,没有触发EOF场景。
修复方法
给输入循环添加try-except块,捕获EOFError后主动以退出码0结束程序。示例修改如下:
menu = { "taco": 3.00, "burrito": 5.00, "nachos": 4.50, "quesadilla": 4.00, "chips": 2.00 } total = 0.0 try: while True: item = input("Item: ").strip().lower() if item in menu: total += menu[item] print(f"Total: ${total:.2f}") except EOFError: # 可选:打印最终总价(若题目要求),或仅换行避免输出混乱 print() exit(0)
这段代码中,当触发EOF时,程序会进入except块,执行exit(0)主动返回退出码0,满足平台的测试要求。
内容的提问来源于stack exchange,提问作者Udit Gautam
相关产品推荐
相关产品推荐

