1

5 つのテキスト ファイル a.txt、b.txt、c.txt、d.txt、e.txt があるとします。それぞれからコンテンツを読み取り、それぞれからランダムな行を呼び出すことができるようにしたい a: a.txt からのランド b: b.txt からのランド など

これまでのところ、これは1つのテキストファイルで機能します...

import random

contents=[]

with open("a.txt") as a:
    for line in a:
        line=line.strip()
        contents.append(line)

print "Welcome!"
print ""
print "a:", contents[random.randint(0,len(contents)-1)]

どんな助けでも乾杯<3

4

2 に答える 2

1

foo ループを使用します。

random.randintの代わりにrandmo.choiceを使用します。

import os
import random

for filepath in ['a.txt', 'b.txt', 'c.txt', 'd.txt', 'e.txt']:
    with open(filepath) as f:
        lines = [line.strip() for line in f]
    print os.path.splitext(os.path.basename(filepath))[0], ':', random.choice(lines)
于 2013-08-09T07:36:44.807 に答える
0

ファイル名をパラメーターとして受け取る関数にロジックを配置し、同時にランダムピックをその関数に配置できます。

import random

def pick_random(filename):
    contents=[]
    with open(filename) as a:
        for line in a:
            line=line.strip()
            contents.append(line)
    return contents[random.randint(0,len(contents)-1)]

print "Welcome!"
print ""
print "a:", pick_random("a.txt")
print "b:", pick_random("b.txt")

上記のように1つずつ呼び出すか、すべてのファイルをリストに入れてループすることにより、行を選択するファイルごとに関数を呼び出すことができます。

これはコードの簡単な拡張ですが、より明確な解決策として falsetru の回答を検討してください。random.choiceを使用すると、達成したいことがより明確になります。

于 2013-08-09T07:36:18.560 に答える