Python 阅读竞争网站中的一行代码时的EOF,即Code Chef

Python 阅读竞争网站中的一行代码时的EOF,即Code Chef,python,python-3.x,eof,Python,Python 3.x,Eof,我正在尝试使用以下代码解决一个问题: X,Y = map(float, input().split()) if X < Y and not X % 5: print(Y - X - 0.50) else: print(Y) X,Y=map(float,input().split()) 如果X

我正在尝试使用以下代码解决一个问题:

X,Y = map(float, input().split())

if X < Y and not X % 5:
    print(Y - X - 0.50)
else:
    print(Y)
X,Y=map(float,input().split())
如果X
当我使用IDLE运行时,此代码为我提供了所需的输出。但是,当我尝试使用竞争性编程网站提供的解释器运行此代码时,出现以下错误:

Traceback (most recent call last):
  File "./prog.py", line 1, in <module>
EOFError: EOF when reading a line
回溯(最近一次呼叫最后一次):
文件“/prog.py”,第1行,在
EOF:读取一行时的EOF

我试着阅读其他类似问题的答案,但在我的情况下,这些答案似乎都不起作用。

竞争对手的编程网站可能正在运行python 2。Python 2对待
input()
的方式与Python 3不同

您应该使用
raw\u input()
而不是
input()

从文档中:

从输入中读取一行,将其转换为字符串 (剥离尾随换行符),并返回该换行符

您的问题可以从以下解释中得到解释:

在Python 2中,raw_input()返回一个字符串,input()尝试运行 将输入转换为Python表达式


再看看codechef页面。请注意标记为“自定义输入”的复选框。选中/勾选后,将打开一个文本框,您可以在其中放置输入行


我不确定原因,但程序试图在数据结束后读取。您可以通过异常处理来解决此问题

try:
    data = input()
except EOFError:
    break

可能解释器没有将任何信息传递给stdin,因此您的
input
调用无法获取任何信息。你确定你应该通过输入得到X和Y吗?也许它们实际上是命令行参数之类的。具体来说,这是一个什么样的竞争性编程网站?如果没有问题的实际样本,很难说。试着通过分离输入过程来调试它:抓取一行输入,检查其内容的有效性,打印该行,等等。看看什么样的输入正在使程序崩溃。这可能很简单,只需识别文件末尾的空行即可。函数调用是什么
input()
?这应该是标准的Python3.x吗?可能需要将该行拉出,然后首先
user\u input=input().split()
并首先获得结果,然后将该用户输入传递到
map(float,user\u input)
@Kevin它是CodeChef@Prune这些值会被识别并在idle中工作。您可以选择使用哪种语言运行它。所以,不,这不是问题所在。我在Python3.4中显式运行它,您是否使用codechef上的“自定义输入”功能提供输入?我没有遇到任何问题,提供:
12
自定义工作正常。只是不是他们的投入。为了便于参考,请在编译器中使用问题代码HS08TEST。我认为您需要明确说明您在哪里运行代码以及您提供的输入。