如何将多个用户输入写入文本文件?代码问题求助
问题分析与解决方案
核心问题拆解
- 文件仅保留最后一条记录:每次循环用
'w'模式打开文件,该模式会清空原有内容并从头写入,导致之前的记录被覆盖。 - main函数调用无效&代码结构混乱:
writedata函数为空,循环代码未被封装进函数,且全局变量fname未正确传递,导致main函数调用后无实际执行逻辑。
修正后的代码
def writedata(fname): for i in range(3): print(f">> Enter record for student {i+1} in the format of [1. Name, 2. Mark]:") stdname = input('>> Student Name: ') marks = input('>> Mark for exam: ') # 使用'a'模式追加写入,避免覆盖原有内容 with open(fname, 'a', encoding='utf-8') as f: f.write(f"{stdname}\n{marks}\n") print(">> Student record writing completed!") def main(): fname = input(">> Please Enter a file name, followed by .txt: ") writedata(fname) # 启动程序 if __name__ == "__main__": main()
关键修正说明
- 文件写入模式调整:将
'w'改为'a',每次写入时在文件末尾追加内容;同时用with语句自动管理文件关闭,避免手动关闭遗漏的问题。 - 代码结构重构:将输入、写入逻辑封装到
writedata函数中,通过参数传递文件名,避免全局变量滥用;main函数负责接收文件名输入并调用执行写入逻辑。 - 交互提示补充:添加了预期输出中的学生记录引导提示,让交互流程更清晰。
内容的提问来源于stack exchange,提问作者noobatprogramming
相关产品推荐
相关产品推荐

