You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python3中的‘EOFError: EOF when reading a line’错误?

解决你的完全平方数判断程序运行时错误问题

嘿,我来帮你排查下这个问题~你的代码在本地IDE能正常运行,但在线IDE报错,主要是两个关键问题导致的:

1. 循环条件错误引发的EOFError

你写的循环条件是while T >= 0,假设你输入的测试用例数是T=3,这个循环会执行4次(T=3、2、1、0),但你实际只需要运行T次测试。当T减到0时,程序还会尝试执行num = int(input()),这时候在线IDE的输入流已经没有更多内容了,就会抛出EOFError——这就是你看到的运行时错误的根源。

把循环条件改成while T > 0就能解决这个问题,这样程序只会刚好执行T次输入读取。

2. 未处理负数输入的情况

完全平方数的定义是非负整数,要是输入的num是负数,math.sqrt(num)会直接抛出ValueError。我们可以先判断num是否小于0,如果是,直接输出0即可,没必要再计算平方根。

修正后的完整代码

import math

T = int(input())
while T > 0:
    num = int(input())
    if num < 0:
        print('0')
    else:
        sqrt_val = int(math.sqrt(num))
        if sqrt_val * sqrt_val == num:
            print('1')
        else:
            print('0')
    T = T - 1

另外给你个小建议:尽量别用sqrt当变量名,它和math.sqrt的函数名重名了,虽然语法上没问题,但会降低代码可读性,我改成了sqrt_val~

内容的提问来源于stack exchange,提问作者Fatemeh Karimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:27:33