0

randomnumbers(1-10).pyという名前の100個の乱数を持つ10個のファイルがあります。123の文字列が見つかったら「おめでとう」と言うプログラムを作成し、123が表示された回数もカウントしたいと思います。「おめでとう」の部分があり、カウントの部分のコードを書いたのですが、結果として常にゼロになります。どうしたの?

for j in range(0,10):
n = './randomnumbers' + str(j) + '.py'          
s='congradulations' 
z='123' 
def replacemachine(n, z, s):
    file = open(n, 'r')             
    text=file.read()    
    file.close()    
    file = open(n, 'w') 
    file.write(text.replace(z, s))
    file.close()
    print "complete"
replacemachine(n, z, s) 
count = 0
if 'z' in n:
    count = count + 1
else:
    pass
print count
4

2 に答える 2

0

検討:

some_file_as_string = """\
184312345294839485949182
57485348595848512493958123
5948395849258574827384123
8594857241239584958312"""

num_found = some_file_as_string.count('123')
if num_found > 0:
    print('num found: {}'.format(num_found))
else:
    print('no matches found')

'123' in some_file_as_string文字列全体を調べる必要があるため、anを実行するのは少し無駄です。とにかくカウントして、カウントが 0 を超える場合に何かを行うこともできます。

あなたもこれを持っています

if 'z' in n:
    count = count + 1
else:
    pass
print count

文字列「z」が存在するかどうかを尋ねています。z代わりに変数をチェックする必要があります(引用符なし)

于 2012-09-29T21:08:43.120 に答える
0

if 'z' in n'z'リテラル文字列がfilename に含まれているかどうかをテストしていますn。内でのみファイルを開くためreplacemachine、外部からファイルの内容にアクセスすることはできません。

最善の解決策は、内から出現をカウントすることですreplacemachine

def replacemachine(n, z, s):
    file = open(n, 'r')
    text=file.read()
    file.close()
    if '123' in text:
        print 'number of 123:', text.count('123')
    file = open(n, 'w')
    file.write(text.replace(z, s))
    file.close()
    print "complete"

その後、そのコードは必要ありませんreplacemachine(n, z, s)

于 2012-09-29T18:13:28.027 に答える