如何在python3中解决“EOFError:读取行时EOF”错误?

时间:2018-03-28 10:49:02

标签: python pycharm runtime

我对python完全不熟悉。我想编写一个程序来检查数字是否平方。我的代码:

import math
T = int(input())

while T >= 0:
    num = int(input())
    sqrt = int(math.sqrt(num))

    if sqrt * sqrt == num:
        print('1')
    else:
        print('0')

    T = T - 1

代码在我的IDE( pycharm社区2017 )中正常运行,但是在在线IDE(on geeksforgeeks ide)中看到它会出现运行时错误:

Traceback (most recent call last):
  File "/home/043265f1cbdf257ecc20a7579588a4a4.py", line 5, in <module>
    num = int(input())
EOFError: EOF when reading a line

3 个答案:

答案 0 :(得分:2)

您为T设置的值为5,这意味着while循环将运行6次,但您只提供5个整数。这就是为什么它试图读取额外的行并给你错误的原因。

因此,您应该将while循环中的条件更改为:

while T > 0:

答案 1 :(得分:2)

是,将其更改为:

    while T>0:

您只提供5个值。如果没有为 input()提供数据,则会发生EOF错误。它也在documentation

中解释

答案 2 :(得分:1)

将其更改为:

while T > 0:

如果您比较>=并且您的示例仅提供5,则您要请求6个号码。

也许更好:

import math

for _ in range(int(input)):
    num = int(input())
    sqrt = int(math.sqrt(num))

    if sqrt * sqrt == num:
        print('1')
    else:
        print('0')

并删除T