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

如何从.txt文件读取每行数据创建对应Student类的对象实例

问题原因

你当前的代码存在以下几个核心问题:

  • 缩进错误:for循环下方的行处理代码没有缩进,只会在循环结束后执行1次,只能读取到循环结束后最后一次赋值的line内容
  • 没有初始化容器存储生成的Student实例,每次解析出来的name/age/grade变量会被新的行内容覆盖
  • 换行符转义符写错为/n,实际应为\n,且strip()方法已经可以自动清除首尾空白/换行符,该处理逻辑冗余
  • split()拆分出来的age、grade为字符串类型,需要转换为数值类型再传入类构造函数

修正后可运行代码

class Student():
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade

# 初始化列表存储所有Student实例
student_list = []

with open("students.txt", "r") as f:
    for line in f.readlines():
        # 处理行内容,拆分属性
        data = line.strip()
        name, age, grade = data.split("|")
        # 转换数值类型,实例化Student后加入列表
        stu = Student(name, int(age), int(grade))
        student_list.append(stu)

# 验证:打印所有学生信息
for stu in student_list:
    print(f"姓名:{stu.name},年龄:{stu.age},分数:{stu.grade}")

逻辑说明

  1. 提前声明空列表student_list,用来存储每一行生成的Student实例
  2. 调整行处理代码的缩进,让每一行的解析、实例化逻辑都在for循环内执行
  3. 拆分内容后对age、grade做类型转换,保证属性类型符合预期
  4. 每生成一个Student实例就追加到列表中,避免数据被覆盖

内容的提问来源于stack exchange,提问作者Candyman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:06:10