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
中也有说明
我是 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
中也有说明