1

私はPythonスクリプトを持っています。これにすべての入力を一度提供してから、いくつかの出力を出力します。さて、私が期待しているのはこのフォーマットです

            input 1
            input 2
            input 3
            output 1
            output 2

今私の問題は、Pythonスクリプトを実行し、入力を提供して(ターミナルに貼り付けて)、「出力1」を印刷した後に出力が一時停止し、Enterキーを押して再度印刷する必要があることです。

from sets import Set

test_cases = int(raw_input())

while test_cases > 0:
    cats_vs_dogs = {}
    input_ = raw_input()
    input_ = input_.split(" ")
    total_cats = input_[0]
    total_dogs = input_[1]
    votes = int(input_[2])    
    remove_count = 0
    cats = Set()
    dogs = Set()
    for i in range(1, int(total_cats) + 1):
        cats.add('C' + str(i))
    for i in range(1, int(total_dogs) + 1):
        dogs.add('D' + str(i))

    for i in range(0, votes):
        input_ = raw_input()
        input_ = input_.split(" ")
        cat = input_[0]
        dog = input_[1]        
        if cat in cats:
            cats.remove(cat)
        elif cat in dogs:
            dogs.remove(cat)
        if dog in cats:
            cats.remove(dog)
        elif dog in dogs:
            dogs.remove(dog)

        if dog not in cats_vs_dogs:
            # now simply add the vote
            if cat in cats_vs_dogs:
                temp = list(cats_vs_dogs[cat])
                temp.append(dog)
                cats_vs_dogs[cat] = temp
            else:
                # cat was not found
                cats_vs_dogs[cat] = list([dog])
        else:
            # relevant dog is present, remove corresponding cat
            dogs_list = list(cats_vs_dogs[dog])
            if cat in dogs_list:
                # remove this entry and don't save it
                dogs_list.remove(cat)
                cats_vs_dogs[dog] = dogs_list
                remove_count += 1
            else:
                # no reverse entry exists so simply add
                if cat not in cats:
                    cats_vs_dogs[cat] = list([dog])
                else:
                    cats_list = list(cats_vs_dogs[cat])
                    cats_list.append(dog)
                    cats_vs_dogs[cat] = cats_list


    # now update the count
    for k in cats_vs_dogs.keys():
        remove_count += len(cats_vs_dogs[k])
    print remove_count + len(cats) + len(dogs)
    # print 'cats: ', cats
    # print 'dogs: ', dogs
    test_cases -= 1
    cats.clear()
    dogs.clear()
    cats_vs_dogs.clear()

私が入力として提供するものは次のとおりです。

    2
    1 1 2
    C1 D1
    D1 C1
    1 2 4
    C1 D1
    C1 D1
    C1 D2
    D2 C1

私が得る出力は次のとおりです。

    ...
    D2 C11
    <system pause> I press enter
    3

一方、私はそれが

    D2 C1<last line>
    1
    3
4

1 に答える 1

0

あなたのコードが正確に何をするのかを理解しようとしていましたが、あなたが試すかもしれないいくつかの提案を提供することができます:

  • を使用するrange()場合はゼロを入れる必要がないのでrange(0,6)、 と同じrange (6)です。
  • 使用するときraw_input()は、ある種のプロンプトを含めると便利なことがよくあります。デバッグにも役立ちます。このようにして、表示されている一時停止が実際に入力を待っているかどうかを知ることができます。例は次のようになりますtest_cases = raw_input("Enter number of test cases: ")
  • 最後に、実際の質問について: あなたのprintステートメントはwhileブロックに含まれています。したがって、おそらく何かを印刷してから、コード全体に戻ります。ブロックから引き抜いてみて、何が起こるか見てみましょう。
于 2013-08-08T22:09:08.943 に答える