2017-02-09 92 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))