0

いくつかのサンプル プログラミング コンテストの質問に Python を使用しようとしてきましたが、ファイルの読み取りに苦労しました。

私は stdin から読んでいます。最初の行は、それに続くテスト ケースの数です。後続の各行には、処理する必要がある 2 つの整数が含まれています。例えば

3
4 -10
0 5
6 20
2
0 -1
20 10
etc...

次のような C++ ソリューションを見つけました。

int main()
{
 int runs,a,b ;
 cin >> runs ;
 while(runs--)
 {
  cin >> a >> b ;
  long long ret = solve(a,b) ;
  cout << ret << endl ;
 }
 return 0 ;
}

私がPythonで思いついた最も近いものは次のとおりです。

t = int(raw_input())
answer = 0
while t :
    n, m = map(int, raw_input().split())
    answer = solve(n,m)
print answer

スタック オーバーフローで同様の質問を見たことがありますが、これを行う Python の方法に頭を悩ませています。

4

3 に答える 3

2
3
4 -10
0 5
6 20
2
0 -1
20 10

このようにします。

num_of_testcases = int(raw_input()) # this corresponds to 3 and 2
for each in range(number_of_testcases):
    x, y = map(int, raw_input().split()) # this would give the pair of numbers

コンテストでは、通常、テスト ケースの総数があります。あなたはここでそれについて言及していません。先取りされる

total_test_cases = int(raw_input())

次に、上記の入力収集ルーチンを反復します。total_test_casesテスト ケースの総数が存在しない場合は、True の間反復し、EOF でキャンセルできます。

for tc in range(total_test_cases):
   num_of_testcases = int(raw_input()) # this corresponds to 3 and 2
   for each in range(number_of_testcases):
       x, y = map(int, raw_input().split()) # this would give the pair of numbers
于 2012-10-21T19:19:13.257 に答える
2

これを試して:

import sys
for l in sys.stdin.readlines()[1:]:
    a,b = map(int,l.split())
    #now process your test cases

また、入力ファイルの説明によると、テスト ケースのセットは 1 つだけである必要があります。

3
4 -10
0 5
4 20
于 2012-10-21T21:32:11.647 に答える
1

raw_inputを使用したくない場合は、代わりにfileinputを使用できます。

import fileinput

input = fileinput.input()
for line in input:
    for j in range(int(line)):
        solve(*[int(i) for i in input.next().split()])

またはsys.stdinを使用

import sys

for line in sys.stdin:
    for j in range(int(line)):
        solve(*[int(i) for i in sys.stdin.next().split()])
于 2012-10-21T19:34:58.253 に答える