2016-11-11 4 views
0

OK so gerade begonnen Python lernen i und ich war die Lösung codechef Probleme i schrieb die folgende Lösung für this Problem:Python-Grundlagen: Wie nehme ich zuerst die komplette Eingabe und bekomme später die komplette Ausgabe?

testcase = input() 
remain = [] 
chef = [] 
assistant = [] 
for _ in range(testcase): 
    comp,rem = map(int,raw_input().split()) 
for _ in range(1,comp+1): 
    remain.append(_) 
    temp = map(int,raw_input().split()) 
    remain = [x for x in remain if x not in temp] 
    for i in range(len(remain)): 
    if i%2==0: 
     chef.append(remain[i]) 
    else: 
     assistant.append(remain[i]) 
    sarr = [str(a) for a in chef] 
    darr = [str(a) for a in assistant]   
    print " ".join(sarr) 
    print " ".join(darr) 
    remain[0:] = [] 
    chef[0:] = [] 
    assistant[0:] = [] 

jetzt das Programm tut, was sein soll tun, aber ich möchte, dass alle nehmen Eingänge vor dem Abrufen der Ausgabe wie in this dargestellt Beispiel

+1

Statt den ganzen Code von Dumping, ist es hilfreich, sie auf das Wesentliche zu destillieren nach unten, vor allem, wenn Sie mit einem Spielzeug exampl arbeiten können e. –

+0

Dies ist auch eher ein stilistisches Problem, aber ich würde vermeiden, 'raw_input' in funktionalen Konstrukten wie' map' zu verwenden (oder zum Beispiel Listenkompromittierungen). –

+0

Suchst du nach etwas, was ich in meiner Antwort gezeigt habe? – Shasha99

Antwort

0

Lesen Sie alle Eingaben in eine Art von Sammlung (eine Liste wäre die einfachste Option), und holen Sie sie dann aus dieser Sammlung zur Verarbeitung.

0

etwas tun und dann später die gespeicherten Eingabe verarbeiten:

comp=[] 
rem=[] 
indexes = [] 

for _ in range(testcase): 
    rem_t,comp_t = map(int,raw_input().split()) 
    rem.append(rem_t) 
    comp.append(comp_t) 

    for _ in range(1,comp[i]+1): 
     indexes.append(map(int,raw_input().split())) 

nun für jeden Testfall i, müssen Sie chef und assitant Listen innerhalb der Schleife definieren und die Eingabe zu manipulieren gespeichert in comp[i], rem[i] and indexes[i]:

for i in range(testcase): 
    # define chef and assistant lists. 
    # use comp[i], rem[i] and indexes[i]. 
    # print the the content of chef and assistant array. 
+0

Ich habe versucht, die Ausgabe zu speichern, aber die Sache ist, wenn ich alle Ausgänge in einer einzigen Liste außerhalb der Schleife speichern, habe ich keine Möglichkeit, die Ausgabe für einen einzelnen Testfall mit unterschiedlicher Anzahl von Aufträgen zu unterscheiden. –

+0

@virenkanjani, und nach der Problembeschreibung, auf die Sie sich beziehen, hat jeder Testfall 2 Zeilen, eine mit Werten von n und m und die zweite mit m-Elementen. Für jeden Testfall hast du also n, m und eine Liste. das ist nichts anderes als comp [i], rem [i] und index [i] (Index ist eine Liste von Listen) für Testfall i. Ist es klar genug? – Shasha99

+0

@virenkanjani funktioniert das jetzt für Sie? – Shasha99

Verwandte Themen