2017-11-28 11 views
0

私のプログラムがリストをテキストファイルに書き込もうとしています。私はそれを文字列に変更し、それはテキストファイルを作成しますが、それは空です。また、テキストファイルに書き込もうとしている変数を出力するようにしました。それは想定されているとおりに正確に出力されます。pythonをテキストファイルに書き込むことができません、私に空のファイルを与えます

import string 
import re 
wholeLine = "" 
file = open("bowlingscores.txt", "r") 
for line in file: 
    line = line.strip() 
    wholeLine += line 
    scores = re.findall('\d+', wholeLine) 
    names = re.findall('\D+', wholeLine) 
file.close() 
scores = list(map(int,scores)) 
validScores = [x for x in scores if 300 >= x >= 0] 
average = sum(validScores)/len(validScores) 
numScores = len(scores) 
output = [] 
for i in range(numScores): 
    if scores[i] == 300: 
     output.append(names[i]) 
     output.append("\nperfect") 
    if scores[i] == average: 
     output.append(names[i]) 
     output.append("\naverage") 
    if scores[i] < average: 
     output.append(names[i]) 
     output.append("\nbelow average") 
    if scores[i] > average: 
     if scores[i] <300: 
      output.append(names[i]) 
      output.append("\nabove average") 
    if scores[i] > 300: 
     output.append(names[i]) 
     output.append("\ninvalid score") 
outputFile = open('bowlingaverages.txt', 'w') 
outputFile.write(str(output)) 
outputFile.close 
print(output) 

答えて

1

あなたはここで

outputFile = open('bowlingaverages.txt', 'w') 
outputFile.write(''.join(output)) 
outputFile.close() 
0

を使用してみてください、適切に文字列にリストされ、あなたの出力を変換する必要がありますが、あなたが(リストである)を出力してファイルに書き込むしたい方法です。

0

更新: 私は次のようにコードを編集し、友人に自分のコンピュータでそれを実行させましたが、それは私のコンピュータではまだ動作しませんでした。私は今よりもまず混乱しています。それはおそらく別のプログラムの問題ですか?

import string 
import re 
wholeLine = "" 
file = open("bowlingscores.txt", "r") 
for line in file: 
    line = line.strip() 
    wholeLine += line 
    scores = re.findall('\d+', wholeLine) 
    names = re.findall('\D+', wholeLine) 
file.close() 
scores = list(map(int,scores)) 
validScores = [x for x in scores if 300 >= x >= 0] 
average = sum(validScores)/len(validScores) 
numScores = len(scores) 
output = [] 
for i in range(numScores): 
    if scores[i] == 300: 
     output.append(names[i]) 
     output.append("\tperfect\n") 
    if scores[i] == average: 
     output.append(names[i]) 
     output.append("\taverage\n") 
    if scores[i] < average: 
     output.append(names[i]) 
     output.append("\tbelow average\n") 
    if scores[i] > average: 
     if scores[i] <300: 
      output.append(names[i]) 
      output.append("\tabove average\n") 
    if scores[i] > 300: 
     output.append(names[i]) 
     output.append("\tinvalid score\n") 
outputFile = open('bowlingaverages.txt', 'w') 
for item in output: 
    outputFile.write(item) 
outputFile.close 
print(output) 
+0

私には最初のループに問題があるかもしれませんが、そこにはスコアと他のすべての変数が上書きされるため、最後の行の値のみが含まれています。空であるか、それから何も得られない、結果として何も得られない – Copperfield

関連する問題