2017-02-09 1 views
0

Also ich diesen Code haben (für eine Datei zu dekomprimieren), die ich von der Hilfe eines Freundes erstellt:Ich verstehe nicht, diese Zeile im Code (einfachen Code)

wordsFile = open('wordsFile.txt', 'r') 
words = wordsFile.read() 
words = words.split() 

positionFile = open('positionFile.txt', 'r') 
position = positionFile.read() 
position = position.split() 

position = [int(i) for i in position] 

FinalSentence = [] 
for x in position: 
     FinalSentence.append(words[x-1]) 

print(' '.join(FinalSentence)) 

aber ich verstehe nicht, wie die Zeile FinalSentence.append(words[x-1]) beim Dekomprimieren der Positionen und Wörter zurück in einen Satz arbeitet. Wenn irgendjemand das auf die einfachste Weise erklären könnte, weil ich extrem neu bin, wäre das toll :)

+8

Bitte Code hier als formatierten Text, nicht Bilder. –

+3

Veröffentliche ** Links nicht zu Bildern von Code oder Bildern von Code. Kopieren Sie den Code * und fügen Sie ihn in die Frage * ein. –

+1

https://en.wikipedia.org/wiki/Off-by-one_error –

Antwort

1

Es ist schwer sicher zu sein, da wir keinen Zugriff auf die Dateien haben, aber ich nehme an, dass Positionen die bezeichnet 1-Index der Wörter 'Positionen, aber Wörter sind ein 0-Index-Array, da so Arrays in Python funktionieren. Deshalb sehen Sie x-1 anstelle von x.

Also, wenn Sie Ihre Worte Datei sieht aus wie

sentence this a is 

Und Ihre Positionen Datei sieht aus wie

2 4 3 1 

Dann würden Sie diese anhängt werden, ist, ein, Satz in dieser Reihenfolge.

0

, ohne die Dateien zu sehen, kann ich davon ausgehen, nur, dass es so etwas wie unten (in der einfachsten Form offensichtlich, weil ich keinen wirklichen Leben Szenario für den Code unten sehen konnte)

Die Positionen Variable ist ein Array von ganzen Zahlen.

Es durchläuft das Array von ganzen Zahlen und unterminiert einen Wert von eins, um den Array-Index für Wörter zu erhalten.

Beispiel:

words = ['very', 'my', 'nice', 'sentence'] 
positions = [2, 1, 3, 4] 

Es Schleifen dann durch das Array von Positionen.

Während es die Positionen durchläuft.

FinalSentence.append(words[2 - 1]) 
FinalSentence.append(words[1 - 1]) 
FinalSentence.append(words[3 - 1]) 
FinalSentence.append(words[4 - 1]) 

Es höchstwahrscheinlich minus 1, da Array-Indizes von 0

starten Sie würden dann haben:

FinalSentence = ['my', 'very', 'nice', 'sentence']; 

die dann in

'my very nice sentence' 
0

Diese beide machen verbunden wird ein Array, das jede durch Leerzeichen getrennte Nummer in der "positionFile"

enthält

Diese drei nehmen jeden Wert aus der Liste und fügen das entsprechende Wort aus der "wordsFile" zu einer Liste von Wörtern hinzu. (Die -1 konvertiert in 0-basierte Indizierung, wie @purpleLadydragons sagt).

FinalSentence = [] 
for x in position: 
     FinalSentence.append(words[x-1]) 

Dies verbindet die Wörter in einer Zeichenfolge mit Leerzeichen getrennt und druckt sie auf dem Bildschirm.

print(' '.join(FinalSentence)) 
Verwandte Themen