2013-01-09 2 views
1

나는 모든 입력을 한 번 공급 한 다음 출력을 인쇄하는 파이썬 스크립트를 가지고있다. 이제, 내가 기대하는 것은이 형식은python 스크립트가 일시 중지되었습니다. 사용 중지하는 방법은 무엇입니까?

  input 1 
      input 2 
      input 3 
      output 1 
      output 2 

내가 파이썬 스크립트를 실행하고 '출력 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 

답변

0

잘 나는 등 귀하의 코드가 정확히 무엇인지 알아 내려고했지만, 당신이 시도 할 수 EW 제안 :

  • 사용 range() 그렇게 range(0,6)range (6)와 동일 제로에 넣어 필요가 없습니다.
  • raw_input()을 사용할 때 어떤 종류의 프롬프트를 포함하면 도움이되는 경우가 많습니다. 또한 디버깅에 유용합니다. 이 방법을 사용하면보고있는 일시 중지가 실제로 입력을 기다리고 있는지 여부를 알 수 있습니다. 예는 test_cases = raw_input("Enter number of test cases: ")입니다.
  • 마지막으로, 실제 질문에 대해서는 print 진술 문이 while 블록에 포함되어 있습니다. 그래서 아마 뭔가를 인쇄 한 다음 전체 코드로 돌아갈 것입니다. 블록에서 꺼내어 무슨 일이 일어나는 지보십시오.
관련 문제