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

Python学生成绩类代码优化咨询:零基础入门1小时项目

学生成绩管理代码优化建议

你接触Python仅1小时就能写出类相关的代码,已经很棒了!针对你这份学生成绩管理代码,有以下几个关键优化方向:

  • 遵守Python命名规范:类名采用大驼峰命名法,把student改成Student,这是Python社区通用的编码规范,能显著提升代码可读性。
  • 将成绩改为实例属性,避免硬编码:原代码里每个学生的成绩都硬编码在专属方法中,完全违背了类的复用性设计初衷。应该把成绩作为学生对象的属性,可以在初始化时传入,或者后续通过方法动态设置。
  • 使用通用的成绩打印方法:不要为每个学生单独编写elon_marks、bill_marks这类专属方法,而是实现一个通用的print_marks方法,利用self.name动态获取当前学生的名字,彻底消除重复代码。
  • 成绩用数字类型存储:原代码中成绩以字符串形式(比如"89")存储,后续如果要进行平均分计算、成绩排序等操作会非常繁琐,改成int或float类型才更合理。
  • 修复拼写错误:原代码bill_marks方法里的print("bill score" ,science, "in science")存在拼写错误,应改为bill scored。

优化后的代码示例

class Student:
    def __init__(self, name, grade, section, marks=None):
        self.name = name
        self.grade = grade
        self.section = section
        # 初始化成绩,默认空字典,也可直接传入预设成绩
        self.marks = marks if marks is not None else {}

    def set_marks(self, subject, score):
        # 动态添加/修改科目成绩的方法
        self.marks[subject] = score

    def print_marks(self):
        # 通用成绩打印方法,适配所有学生对象
        if not self.marks:
            print(f"{self.name} 暂无成绩记录")
            return
        for subject, score in self.marks.items():
            print(f"{self.name} scored {score} in {subject}")

# 创建学生对象并设置成绩
elon = Student("elon", "9th", "D")
elon.set_marks("english", 89)
elon.set_marks("maths", 90)
elon.set_marks("science", 99)

bill = Student("bill", "11th", "A", {"english": 55, "maths": 34, "science": 22})

# 打印成绩
elon.print_marks()
bill.print_marks()

优化后的代码复用性大幅提升,你可以轻松创建任意数量的学生对象,随时添加或修改成绩,后续扩展功能(比如计算平均分、成绩排名)也会更加便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:03:27