如何解决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
相关产品推荐
相关产品推荐

