2017-04-01 3 views
0

Ich habe dieses Programm erstellt, das fragt, eine Positionsliste in eine Datei einzugeben, speichert sie als Liste und in einer anderen Datei muss der Benutzer die Liste der Wörter eingeben, die jede Position hat. Wenn ich zum Beispiel ein:Logischer Fehler beim Erstellen des Satzes von der Position

1 2 3 4 5 1 2 3 4 5 

und

this is a repeated sentence 

die outpur sollten

this is a repeated sentence this is a repeated sentence 

jedoch sein, wenn ich meinen Code ausführen bekomme ich die Liste der Position statt

1 2 3 4 5 1 2 3 4 5 

Hier ist mein Code:

import subprocess 
process_position = subprocess.Popen(["notepad","list_of_numbers.txt"]) 
process_position.wait() 
positions = [] 
with open("list_of_numbers.txt","r") as f: 
    positions = f.read().split() 

process_words = subprocess.Popen(["notepad","list_of_words.txt"]) 
process_words.wait() 
sentence = "" 
with open("list_of_numbers.txt","r") as s: 
    sentence= s.read().split() 


mapping = {} 

for (position, word) in zip(positions, sentence): 
    mapping[position] = word 


output = [mapping[position] for position in positions] 

print(' '.join(output)) 
+0

Well 'positions' ** Strings enthält ** nicht ** ** ints ... –

+0

Verwenden' Mapping [int (Position)] = word' ... –

+0

ich habe versucht, aber Ich bekomme einen Syntaxfehler –

Antwort

0

Ich denke, Sie sind verwirrt. Die position Liste, wenn ich richtig verstehe, ist eine Liste der Wortpositionen, die Sie in der Reihenfolge drucken möchten. So wollen Sie es nicht zip zusammen mit den Worten von sentence.

Stattdessen einfach die Wörter in der sentence Liste nachschlagen mit den ganzzahligen Wert der position Zahlen:

result = [] 
for p in map(int, position): 
    result.append(sentence[p]) 

print(' '.join(result)) 

Oder ein Quetschen wenig:

print(' '.join([sentence[p] for p in map(int, position)])) 
+0

es tut mir nicht einen Fehler "Listenindex außerhalb des Bereichs" –

+0

Versuchen Sie 0-basierte Positionen anstelle von 1-basierten zu verwenden. Alternativ verwenden Sie 'sentence [p-1]' anstelle von 'sentence [p]'. –

Verwandte Themen