如何将所有用户输入从for循环保存到文本文件中

时间:2020-01-19 12:17:11

标签: python for-loop output

我有以下任务:

  • 我们将编写一个名为student_register.py的程序,该程序允许学生注册考试地点。

  • 首先,询问用户正在注册的学生人数。

  • 创建一个for循环,以供一定数量的学生使用

  • 每个循环都要求学生输入其ID号。

  • 将每个ID号写入一个名为reg_form.txt的文本文件中

  • 这将用作出勤登记册,他们在到达考试地点时将签署。

我认为下面的代码很接近,因为它保存了文本文件,但只保存了第一个输入的ID号,并且不显示其他代码。

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 :(得分:0)

您将在每个循环中重新打开文件,并以write模式打开它。这意味着您将在每个循环中覆盖文件中的任何数据。

一个简单的解决方法是使用“ a”以附加模式打开文件,或者将结果存储在列表中,然后将所有内容一次写入,这样会更好。

完成文件后关闭文件也是一种好习惯,请参见Why Should I close files with Python。尽管您可以使用reg_form.close()进行此操作,但是更好的方法是使用上下文管理器,因为这可以确保文件始终关闭:

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

答案 1 :(得分:0)

它没有保存,因为您没有关闭文件流。 我建议您将其与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")