Muszę napisać program, który monituje Użytkownikowi wprowadzenie sześciu nazw testów i ich wyników i pisze je do pliku tekstowego o nazwie Tests.txt. Musisz użyć pętli. Każde wejście powinno być zapisane na własną linię w pliku. Program powinien wygenerować komunikat potwierdzenia po zakończeniu. Kiedy uruchomię mój program działa, ale potem dostaję błąd na końcu powiedzenie:

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.

Nie jestem pewien, co robię źle, każda pomoc byłaby doceniona.

Oto mój kod:

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() 
0
brittmoe09 15 luty 2017, 20:57

2 odpowiedzi

Najlepsza odpowiedź

Oto, co zrobiłem. Pozbyć się tego drugiego podczas pętli i przesuń bliski plik z pętli, ponieważ zamykasz plik w pętli, która daje błąd: (niektóre z moich nazw zmiennych są inne niż twoje, więc uważaj na to)

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
jwd00 26 luty 2017, 00:12

Blok podczas:

while name != '':
  ...
0
nguyen thanh chinh 15 luty 2017, 18:23