0

文章の順番をごちゃまぜにするプログラムを作ろうとしています。プログラムは、入力ファイルを受け取り、それをスクランブルして出力ファイルにする必要があります。ただし、文がごちゃ混ぜになっている場合は、元の順序に従って番号を付ける必要があります。例えば、

入力

I love apples  
I love candy  
I love God

出力

2:I love candy

3:I love God

1:I love apples

どのように始めればよいのか本当にわからないので、この問題に取り組むためのアイデアや方法、またはどのような機能や方法を使用すべきかを教えていただければ、それは非常に素晴らしいことです.

4

4 に答える 4

1

配列があると仮定しますsentences

#zip in the original order
sentences = zip(range(len(sentences)), sentences)    
random.shuffle(sentences)
for i, sentence in sentences:
   print "{0}: {1}".format(i, sentence)
于 2013-11-09T02:46:14.940 に答える
0
from random import shuffle

def scramble(infile, outfile):
    with open(infile) as f1, open(outfile, 'w') as f2:
        myrows = list(enumerate(f1, 1))
        shuffle(myrows)
        f2.writelines(('%-4d: %s' % r for r in myrows))

scramble(__file__, '/tmp/scrambled.txt')
with open('/tmp/scrambled.txt') as sf:
    print ''.join(sf)
于 2013-11-09T02:52:24.863 に答える
0

あなたは他の答えに問題があるようですので、ここに私がテストした完全な解決策がありますので、うまくいくはずです:

from random import shuffle

finput = 'path/input.txt'
foutput = 'path/output.txt'

with open(finput, 'r') as fin, open(foutput, 'w') as fout:
    sentences = fin.readlines()

    #add the order using enumeration
    sentences = list(enumerate(sentences))
    shuffle(sentences)
    for i, sentence in sentences:
        fout.write("{0}: {1}".format(i + 1, sentence))  
于 2013-11-09T04:55:26.787 に答える