You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个用户输入写入文本文件?代码问题求助

问题分析与解决方案

核心问题拆解

  • 文件仅保留最后一条记录:每次循环用'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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:25:23