how to solve "EOFError: EOF when reading a line" error in python3?

how to solve "EOFError: EOF when reading a line" error in python3?

我是 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 community 2017) 中运行正常,但它会出现运行时错误,如您在网上看到的 IDEs (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

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

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

while T > 0:

改为:

while T > 0:

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

也许更好:

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

是,将其更改为:

    while T>0:

您只提供了 5 个值。如果没有数据提供给 input(),就会发生 EOF 错误。 documentation

中也有说明