我对python相对较新。代码是一个在线评判中的问题的解决方案,但它会引发运行时错误。请帮我修复这段代码。谢谢。
import math
def square(n):
if n<0:
return 0
else:
tst=int(math.sqrt(n))
if tst*tst==n or (tst+1)*(tst+1)==n or (tst-1)*(tst-1)==n:
return 1
t=input()
for i in t:
n=input()
flag=square(n)
if flag==1:
print "Case %l: Yes\n"%i
else:
print "Case %l: No\n"%i
t=t-1
答案 0 :(得分:1)
现在您的代码中的问题是您正在使用t = input()
逐行接受输入,因此它第一次只返回第一行2
。
然后你试图遍历它,我认为你想循环那么多次,所以你应该把代码更改为 -
t=int(input())
for i in range(t):
使用range
函数会使循环进行很多次,这就是你想要做的事情。
使用%
符号进行字符串格式设置时,您必须提供%d
或%s
等。似乎没有任何%l
。
示例 -
print "Case %d: Yes\n"%i
答案 1 :(得分:0)
尝试阅读python解释器抛出的信息:
Traceback (most recent call last):
File "prog.py", line 17, in <module>
NameError: name 'i' is not defined
错误发生的行号(17)和错误类型('i'未定义)在回溯中清晰显示。