2017-02-15 12 views
0

ユーザーに6つのテスト名とそのスコアを入力し、tests.txtという名前のテキストファイルに書き込むプロンプトを表示する必要があります。ループを使用する必要があります。各入力は、ファイル内の独自の行に書き込まれる必要があります。完了すると、プログラムは確認メッセージを生成する必要があります。私は私のプログラムを実行すると、それは動作しますが、その後、私は最後にエラーが言ってもらう:Pythonでファイルを閉じたI/O操作

Traceback (most recent call last): 
    File "C:/Users/brittmoe09/Desktop/program6_1.py", line 34, in <module> 
    main() 
    File "C:/Users/brittmoe09/Desktop/program6_1.py", line 18, in main 
    test_scores.write(name + '\n') 
ValueError: I/O operation on closed file. 

私は私が間違っているのかわからないです、任意の助けいただければ幸いです。ここで

は私のコードです:

def main(): 

    test_scores = open('tests.txt', 'w') 
    print('Entering six tests and scores') 

for count in range(6): 
    name = input('Enter a test name') 
    score = int(input('Enter % score on this test')) 

    while name != '': 
     test_scores.write(name + '\n') 
     test_scores.write(str(score) + '\n') 
     test_scores.close() 
     print('File was created successfully') 
main() 
+1

よく**あなたは** whileループの中でファイルを閉じますか?次の反復。これは失敗します... –

答えて

0

ここに私がしたことがあります。その2回目のwhileループを取り除き、エラーを返すループ内のファイルを閉じるので、forループからクローズファイルを移動します:(私の変数名の中にはあなたのものとは異なるものがありますので注意してください)

test_scores = open('tests.txt','w')#open txt file 
print('Entering six tests and scores') 


for count in range(6):#for loop to ask the user 6 times 
    name = input('Enter a test name: ') 
    testscore = int(input('Enter % score on this test: ')) 
    for count2 in range(1): 
     test_scores.write(str(name) + '\n') 
     test_scores.write(str(testscore) + '\n') 
test_scores.close()#close the txt file 
print('File was created successfully!') 
0

ブロックしながら、:!あなたの「名前」=「」ので、最初のループでは、ファイルが閉じられ、第二場合、これは無限ループです

while name != '': 
 
    ...
ループするとエラーが発生します

関連する問題