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

Python代码本地运行正常但提交时出现EOFError求助

Python提交代码时出现EOFError: EOF when reading a line的原因及解决办法

错误原因

EOFError: EOF when reading a line 表示程序执行input()函数时,没有读取到任何输入内容就遇到了文件末尾(End of File)。

你本地在Thonny和Zybooks开发标签页能正常运行,是因为这两个环境会主动引导你输入内容,确保两次input()都能读到数据;但提交到判题系统时,系统是通过标准输入流自动传入测试数据,如果测试数据的格式和你的代码读取逻辑不匹配(比如系统只提供了一行输入,而你的代码要求读两行),就会导致第二个input()无法读取到内容,触发该错误。

你的报错栈如下:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    string = input()
EOFError: EOF when reading a line

解决办法

方案1:适配判题系统的输入格式

多数在线判题系统会要求将多个输入放在同一行,用空格分隔。如果是这种情况,修改输入读取逻辑,一次性读取一行再拆分即可(maxsplit=1保证短语中的空格不会被拆分):

parts = input().split(maxsplit=1)
char = parts[0] if parts else ""
string = parts[1] if len(parts) > 1 else ""

count = 0
for i in string:
    if i == char:
        count +=1
        
if count > 1 or count == 0:
    print(f"{count} {char}'s")
else:
    print(f'{count} {char}')

方案2:添加异常处理(兜底方案)

如果不确定输入格式,可通过捕获EOFError来避免程序崩溃,同时设置默认输入值:

try:
    char = input()
    string = input()
except EOFError:
    char = ""
    string = ""

count = 0
for i in string:
    if i == char:
        count +=1
        
if count > 1 or count == 0:
    print(f"{count} {char}'s")
else:
    print(f'{count} {char}')

补充说明

你之前尝试用break命令无效,是因为break仅用于终止循环,而错误发生在input()读取输入的阶段,此时还未进入循环逻辑,所以无法解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:01:18