【问题标题】:How to save all user input from for loop into text file如何将for循环中的所有用户输入保存到文本文件中
【发布时间】:2020-01-19 12:17:11
【问题描述】:

我有以下任务:

  • 我们将编写一个名为​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")

【问题讨论】:

  • 'w' 模式会在文件已存在时将其截断,即删除现有内容。这不是正确的 open 模式(或打开文件的正确位置 - 例如,您可以在在循环之外执行一次),如果这不是您想要的行为。
  • 使用追加模式a而不是w
  • 将此行 reg_form = open('reg_form.txt', 'w') 移到循环之前,如果您只是写入同一个文件,则没有理由一遍又一遍地重新打开文件。最好在此处使用上下文管理器,因此在循环之前添加以下行:with open('reg_form.txt', 'w') as reg_form:。还有id_number = id_number + 1不在说明里,为什么要更改学生输入的身份证号码?

标签: python for-loop output


【解决方案1】:

您在每个循环中都重新打开文件,并且以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")

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-01
      • 2010-12-13
      • 1970-01-01
      • 2015-10-13
      • 2021-02-25
      • 2020-07-24
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多