pycharm 如何解决“EOFError:在python3中阅读一行”error?

ecfdbz9o  于 2023-04-30  发布在  PyCharm
关注(0)|答案(4)|浏览(217)

我对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)中正常工作,但它会出现一个运行时错误,就像你在在线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
ykejflvf

ykejflvf1#

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

while T > 0:
hivapdat

hivapdat2#

是,更改为:

while T>0:

您只提供了5个值。如果没有数据提供给 input(),则会发生EOF错误。文档中也有说明

p8h8hvxi

p8h8hvxi3#

将其更改为:

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

kkih6yb8

kkih6yb84#

人们从哪里得到的想法或证明,变量T曾经被设置为5摆在首位?
我在安装Pydroid 3时也遇到了同样的问题。我所能想到的就是我一定是不小心在我的环境中安装了错误的库。除了c=input()和print(c)之外,我删除了所有的导入和代码,当它试图运行input函数时,我仍然会得到错误。这是一个bug,我一直看到,但偶尔它的工作!

相关问题