2017-02-15 2 views
0

Мне нужно написать программу, которая предложит пользователю ввести шесть имен тестов и их оценки и записать их в текстовый файл с именем tests.txt. Вы должны использовать цикл. Каждый вход должен быть записан в собственную строку в файле. После этого программа должна сгенерировать сообщение с подтверждением. Когда я запускаю свою программу, она работает, но я получаю сообщение об ошибке в конце сказал:Операция ввода-вывода закрыта на файл в python

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

Вот что я сделал. Избавьтесь от этого второго цикла 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 != '': 
 
    ...
Это бесконечность цикла, если ваше «имя» = «», так что в первом цикле файл закрывается и второй! loop вы получаете ошибку

Смежные вопросы