1

我有一个 python 脚本,我向它提供一次所有输入,然后打印一些输出。现在,我期望的是这种格式

            input 1
            input 2
            input 3
            output 1
            output 2

现在我的问题是当我运行python脚本并提供输入(将其粘贴到终端中)时,输出在打印“输出1”后暂停,我必须按回车键再次打印。

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 回答