Python作业程序本地运行正常,代码检测时报EOFError输入错误是什么原因?
报错原因
EOFError: EOF when reading a line 错误本质是input()函数尝试读取输入时,输入流已经为空没有内容可读了。
你本地运行时属于交互式环境,可以手动逐行输入代码要求的所有参数,所以不会触发问题;但代码检测平台为自动化非交互测试环境,只会按照作业要求预先提供固定行数的测试输入,你代码开头强制要求读取7个初始参数,后续菜单循环也要求读取用户选择,当平台提供的测试输入行数不足时,就会触发该报错。从你给出的报错日志来看,第一个参数读取完成后读第二个参数时就已经触发EOF,说明平台提供的测试输入连2行都没有。
修复方案
- 第一步先核对作业的输入规则,确认题目要求的输入格式、输入行数、是否允许缺省参数使用默认值,严格按照题目要求调整输入读取逻辑,不要硬编码7个必须读取的
input()。 - 可以给输入逻辑增加异常捕获,避免读取到EOF直接崩溃,示例代码如下:
# 封装安全读取输入的方法 def get_input(prompt, default_val): try: return float(input(prompt)) except EOFError: return default_val # 替换原有输入读取逻辑,可根据作业要求设置合理默认值 cost_per_ice_cream_serving = get_input("Enter Cost per ice cream serving: ", 2.5) labor_rate = get_input("Employee labor rate (per hour): ", 20) shop_rental = get_input("Shop rental (per month): ", 3000) utilities = get_input("Utilities (per month): ", 500) advertising = get_input("Advertising (per month): ", 1000) selling_price = get_input("Selling price (each): ", 12) serve_sold_per_month = get_input("Ice cream servings sold per month: ", 1000)
- 先修复你现有代码的缩进错误:
while True:下方的所有代码都没有缩进,本地运行也会直接报语法错误,需要把print(menu)及之后的代码都缩进一层,放在while循环内部。 - 如果作业要求平台测试时不需要走交互式菜单,可以在代码中增加判断逻辑,非交互式环境下直接执行指定的计算逻辑输出结果即可。
内容的提问来源于stack exchange,提问作者Lenon Butler
相关产品推荐
相关产品推荐

