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ドキュメントから:

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 に答える