0

这是我的代码

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

我究竟做错了什么 ?请告诉我这是链接

http://codepad.org/nmL96e68

4

2 回答 2

1

来自输入的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 解释器上测试你的代码。

于 2014-09-24T11:21:12.047 回答
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
于 2014-09-24T11:22:56.677 回答