这是我的代码
t=input()
for q in range(t):
s=raw_input()
m,n=s.split(' ')
ans = (m*n)*(m*n-1)
if(m>1 and n>1):
ans -= 4*(n-1)(m-2) + 4*(m-1)*(n-2)
print ans
它有错误
Traceback (most recent call last):
Line 1, in <module>
t=raw_input()
EOFError
我做错了什么?请告诉我 这是链接
答案 0 :(得分:1)
来自input上的python doc:
相当于eval(raw_input(prompt))。
此功能不会捕获用户错误。如果输入语法无效,则会引发SyntaxError。如果在评估过程中出现错误,可能会引发其他异常。
如果您的输入为空,那么您可以获得 EOFError 。
避免在第1行使用输入并使用raw_input。尝试在代码中添加一些错误消息和验证,如下所示:
import sys
try:
t = int(raw_input())
except:
print "No repetition parameters set, using 1"
t = 1
for q in range(t):
s = raw_input()
try:
m,n = s.split(' ')
m = int(m)
n = int(n)
except:
print "Invalid input, enter two integers separated by space"
sys.exit(1)
ans = (m*n)*(m*n-1)
if(m > 1 and n > 1):
ans -= 4*(n-1)*(m-2) + 4*(m-1)*(n-2)
print ans
正如有人建议的那样,总是在真正的python解释器上测试你的代码。
答案 1 :(得分:0)
这可能是您想要实现的,假设m
和n
是整数类型值,
t = input()
for q in range(t):
s = raw_input()
m, n = map(int, s.split(' '))
ans = (m * n) * (m * n - 1)
if m > 1 and n > 1:
ans -= 4 * (n - 1) * (m - 2) + 4 * (m - 1) * (n - 2)
print ans