簡體   English   中英

如何將for循環中的所有用戶輸入保存到文本文件中

[英]How to save all user input from for loop into text file

我有以下任務:

  • 我們將編寫一個名為 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")

您每次循環都重新打開文件,並以write模式打開它。 這意味着您每次循環都會覆蓋文件中的任何數據。

一個簡單的解決方法是使用“a”以追加模式打開文件,或者您可以將結果存儲在列表中,然后在最后一次性寫入所有內容,這樣會更好。

在完成文件后關閉文件也是一種很好的做法,請參閱為什么我應該使用 Python 關閉文件 雖然您可以使用reg_form.close()做到這一點, reg_form.close()更好的方法是使用上下文管理器,因為這可以保證文件始終關閉:

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

它沒有保存,因為您沒有關閉文件流。 我建議您將它與with關鍵字一起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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM