首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python类:考试成绩项目

Python类:考试成绩项目
EN

Stack Overflow用户
提问于 2022-08-31 15:42:02
回答 2查看 53关注 0票数 -3

这是我在尝试了一个小时之后的第一个python迷你项目。我以前没有编码经验,我直接跳到python类。我想知道,该代码是否有任何改进?

代码语言:javascript
复制
class student:
    def __init__(self,name,grade,section):
        self.name = name
        self.grade = grade
        self.section = section


    def elon_marks(self):
        english = "89"
        math = "90"
        science = "99"
        print("elon scored" , english, "in english")
        print("elon scored" , math, "in maths")
        print("elon scored" , science, "in science")



    def bill_marks(self):
        english = "55"
        math = "34"
        science = "22"
        print("bill scored" , english , "in english")
        print("bill scored" , math, "in maths")
        print("bill score" ,science, "in science")

elon = student("elon","9th","D") 
bill = student("bill","11th","A") 
elon.elon_marks()
bill.bill_marks()
EN

回答 2

Stack Overflow用户

发布于 2022-08-31 16:04:49

在类中编写特定于对象(elon,bill)的函数是错误的。你的课也应该是为第三个学生而写的(还有成千上万的学生)。

关于如何改进您的课堂的一些提示:

  1. 包含标记作为类属性。例如,标记可以存储在字典中,其中主题是键,标记本身是值。在__init__函数中添加一行:

代码语言:javascript
复制
        self.marks = {} # Empty dictionary

  1. 向类添加一个函数以设置一个标记(稍后可以改进它以多个标记作为列表,但下面是一个简单的函数:

代码语言:javascript
复制
    sub set_mark(self, subject, mark):
        self.marks[subject] = mark

  1. 将打印语句放入一个单独的函数中(例如,称为print_marks)。当然,该函数将使用self.name作为名称,而不是"elon“或"bill”。而不是打印三个主题的标记,它应该循环(迭代)在标记字典中的内容。我把这作为一项练习留给你们去弄清楚。

  1. 相应地调整您的主要功能。例子:

代码语言:javascript
复制
elon = Student("elon","9th","D")
elon.set_mark("english", 55)
elon.set_mark("math", 34)
elon.set_mark("science", 22)
elon.print_marks()
票数 -1
EN

Stack Overflow用户

发布于 2022-08-31 16:08:40

您可以这样做,这样可以使您的代码更容易阅读,也可以以许多不同的方式使用这个类。

代码语言:javascript
复制
class Student:
    def __init__(self, name, grade, section):
        self.name = name
        self.grade = grade
        self.section = section
        self.marks = {}

    def insert_new_mark(self, subject, mark):
        if subject not in self.marks:
            self.marks.update({subject: mark})
        else:
            print("Subject is already in marks")


elon = Student("elon", "9th", "D")
bill = Student("bill", "11th", "A")

elon.insert_new_mark("English", 89)
elon.insert_new_mark("Math", 90)
elon.insert_new_mark("Science", 99)


bill.insert_new_mark("English", 55)
bill.insert_new_mark("Math", 34)
bill.insert_new_mark("Science", 22)


print(elon.marks)
print(bill.marks)

产出:

代码语言:javascript
复制
{'English': 89, 'Math': 90, 'Science': 99}
{'English': 55, 'Math': 34, 'Science': 22}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73558505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档