2013-01-09 85 views
1

我有一个python脚本,我提供所有输入一次,然后打印一些输出。现在,我希望是这种格式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() 

i电源作为输入的是:

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 

回答

0

嗯,我试图弄清楚你的代码到底是做什么的,但我可以提供af EW建议你可以尝试:

  • 当您使用range()你不需要放于零,所以range(0,6)是一样的range (6)
  • 当您使用raw_input()时,通常会包含某种提示。这对调试也很有帮助。这样你就可以知道你所看到的停顿是否真的在等待输入。一个例子是test_cases = raw_input("Enter number of test cases: ")
  • 最后,关于您的实际问题:您的print声明包含在while区块中。所以它可能是打印一些东西,然后回到整个代码。尝试将它从块中拉出来,看看会发生什么。