2017-02-09 17 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の代わりにx-1が見えます。だから、

あなたの言葉のファイルが

sentence this a is 

のように見え、あなたの位置のファイルが

2 4 3 1 

のように見える、あなたはこの文、ですが付加されるかどうの順番になります。

0

ファイルを見なければ、私はそれが以下のような何かをすると仮定することができます(私は以下のコードのための本当の人生のシナリオを見ることができなかったので、それには、明らかに単純な形式です)

位置の変数が配列であります整数の

これは整数の配列をループし、1の値を無効にしてワードの配列インデックスを取得します。例について

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

それは次に位置の配列をループ。

位置によってループします。配列のインデックスは0

から始めるので

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

それ最も可能性の高いマイナス1は、その後、必要があります。その後、

'my very nice sentence' 
0

これら二つのメイクに参加します

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

を「positionFile」内のすべての空白で区切られた数字を含む配列

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

これらの3つの値はリストから取得し、対応する単語をwordsFileから単語リストに追加します。 -1は@purpleladydragonsのように0ベースのインデックスに変換されます)

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

これは、スペースで区切られた文字列に単語を結合し、画面に出力します。

print(' '.join(FinalSentence)) 
関連する問題