2017-02-09 93 views
0

所以我有這樣的代碼(解壓縮文件),這是我從一個朋友的幫助下創建:我不明白的代碼(簡單的代碼)這條線

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)) 

但是我不明白行FinalSentence.append(words[x-1])如何在將位置和單詞解壓縮到句子中工作。如果任何人都可以用最簡單的方式解釋,因爲我對此非常陌生,那很好:)

+8

請在這裏發佈代碼格式文本,而不是圖像。 –

+3

做**不**請鏈接到代碼圖片或代碼圖片。將代碼*複製並粘貼到問題*中。 –

+1

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

回答

1

很難確定,因爲我們無法訪問這些文件,但是我認爲這些位置表示單詞'位置的1個索引,但是單詞是0索引數組,因爲這就是數組在python中的工作原理。所以這就是爲什麼你看到x-1而不是x。

所以,如果你的話文件看起來像

sentence this a is 

而且你的立場文件看起來像

2 4 3 1 

然後你會被追加一個句子按此順序。

0

沒有看到這些文件,我只能假設它確實是這樣的下方(這是最簡單的形式很明顯,因爲我無法看到真實的生活場景爲下面的代碼)

的位置變量是一個數組整數。

它循環遍歷整數數組,並使其值爲1以獲取單詞的數組索引。

例如:

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

它然後通過位置的陣列環路。

當它循環它所做的位置。

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

它最有可能的優缺點1,因爲數組索引從0

開始,您將不得不:

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

然後把它加入到

'my very nice sentence' 
0

這兩個化妝一個數組,其中包含「位置文件」中的每個空格分隔的數字

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

這三個從列表中獲取每個值,並將相應的單詞從「wordsFile」添加到單詞列表中。 -1轉換爲基於0的索引,如@purpleladydragons所示)

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

將單詞加入由空格分隔的字符串中,並將其打印到屏幕上。

print(' '.join(FinalSentence))