Как сохранить весь пользовательский ввод из для l oop в текстовый файл - PullRequest
1 голос
/ 19 января 2020

У меня есть следующая задача:

  • Мы напишем программу под названием student_register.py, которая позволяет студентам регистрироваться для сдачи экзамена.

  • Сначала спросите пользователя, сколько студентов регистрируется.

  • Создать цикл for, который выполняется для такого количества учащихся

  • Каждый l oop просит студента ввести свой идентификатор число.

  • Запишите каждый из идентификационных номеров в текстовый файл с именем reg_form.txt

  • Это будет использоваться в качестве регистра посещаемости, который они будут подписать, когда они прибывают на место проведения экзамена.

Я думаю, что следующий код, который у меня есть, близок, поскольку сохраняет текстовый файл, но сохраняет только первый введенный идентификационный номер и не отображает остальные.

students = int(input("Please enter the amount of students registered."))
id_number = ""

for a in range (0, students):
    id_number = (int(input("Please enter student ID numbers.")))
    id_number = id_number + 1
    reg_form = open('reg_form.txt', 'w')
    reg_form.write("Student ID numbers: \n" + str(id_number))

print ("Thank you, ID numbers saved to txt file reg_form")

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Это не сохранение, потому что вы не закрываете файловый поток. Я предлагаю использовать его с ключевым словом with, оно обрабатывает открытие и закрытие вашего файла и сохранение данных.

students = int(input("Please enter the amount of students registered."))
id_number = ""

for a in range (0, students):
    id_number = (int(input("Please enter student ID numbers.")))
    id_number = id_number + 1
    with open('reg_form.txt', 'w') as file:
        file.write("Student ID numbers: \n" + str(id_number))

print ("Thank you, ID numbers saved to txt file reg_form")
0 голосов
/ 19 января 2020

Вы открываете файл каждые l oop и открываете его в режиме write. Это означает, что вы перезаписываете любые данные в файле каждые l oop.

Простым решением было бы открыть файл в режиме добавления, используя 'a', в противном случае вы можете сохранить результаты в списке, а затем записать все в один go в конце, что было бы лучше.

Хорошей практикой также является закрытие файла после того, как вы закончили с ним, см. Почему я должен закрывать файлы с Python. Хотя вы можете сделать это с помощью reg_form.close(), лучше использовать контекстный менеджер, поскольку это гарантирует, что файл всегда закрыт:

with open("reg_form.txt", "w") as my_file:
    my_file.write("some data")
...