0

趣味で簡単なプログラムを作っています。これは、X 個のファイルが Y 個のランダムな 0 と 1 で満たされるように入力する必要があります。

これを実行すると、各ファイルに 20 個のランダムな 0 と 1 で満たされた 2 つのファイルが必要になります。これを実行すると、最初のファイルだけがいっぱいになり、2番目のファイルは空のままになります。

2 番目のループと関係があると思いますが、よくわかりません。どうすればこれを機能させることができますか?

import random

fileamount = int(raw_input("How many files should I make? > "))
amount = int(raw_input("How many characters in the files? > "))
print "I will now make %r files with %r characters in them!\n" % (fileamount, amount)
s1 = 0
s2 = 0

while s2 < fileamount:
    s2 = s2 + 1
    textfile = file('a'+str(s2), 'wt')
    while s1 < amount:
        s1 = s1 + 1
        textfile.write(str(random.randint(0,1)))
4

3 に答える 3

3

の値をリセットするだけでなくs1、必ずファイルを閉じてください。バッファがディスクに書き込まれる前にプログラムが終了すると、出力がファイルに書き込まれないことがあります。

withstatementを使用して、ファイルが閉じていることを保証できます。withPython の実行フローがスイートを離れると、ファイルは閉じられます。

import random

fileamount = int(raw_input("How many files should I make? > "))
amount = int(raw_input("How many characters in the files? > "))
print "I will now make %r files with %r characters in them!\n" % (fileamount, amount)

for s2 in range(fileamount):
    with open('a'+str(s2), 'wt') as textfile:
        for s1 in range(amount):
            textfile.write(str(random.randint(0,1)))
于 2013-07-25T22:14:51.437 に答える
0

s1に再起動しません0。したがって、2 回目はファイルに何も書き込まれません。

import random

fileamount = int(raw_input("How many files should I make? > "))
amount = int(raw_input("How many characters in the files? > "))
print "I will now make %r files with %r characters in them!\n" % (fileamount, amount)

s2 = 0
while s2 < fileamount:
    s2 = s2 + 1
    textfile = open('a'+str(s2), 'wt') #use open
    s1 = 0
    while s1 < amount:
        s1 = s1 + 1
        textfile.write(str(random.randint(0,1)))
    textfile.close() #don't forget to close
于 2013-07-25T22:12:46.177 に答える
0

s2最初のループの後、ゼロに戻りません。したがって、次のファイルは文字を取得しません。したがってs2=0、内側のループの直前に配置します。

関数を使用することをお勧めしrangeます。

import random

fileamount = int(raw_input("How many files should I make? > "))
amount = int(raw_input("How many characters in the files? > "))
print "I will now make %r files with %r characters in them!\n" % (fileamount, amount)

for s2 in range(fileamount):
    textfile = file('a'+str(s2+1), 'wt')
    for b in range(amount):
        textfile.write(str(random.randint(0,1)))
于 2013-07-25T22:20:26.697 に答える