首页 新闻 会员 周边 捐助

PTA 上的python代码

0
[已解决问题] 解决于 2023-04-09 16:50

俺写的代码如下


name = list(input().split())
math = list(map(int, input().split()))
chinese = list(map(int, input().split()))
english = list(map(int, input().split()))
list_len = len(name)
list_score1 = []
list_score2 = list_score1


class Student:
    sum_score = 0

    def __init__(self, s_name, m_score, c_score, e_score):
        self.s_name = s_name
        self.m_score = m_score
        self.c_score = c_score
        self.e_score = e_score

    def get_sum(self):
        for i in range(0, list_len):
            self.sum_score += self.m_score[i] + self.c_score[i] + self.e_score[i]
            list_score1.append(self.sum_score)  # 本身就带上了位置的标签

    def get_best(self):
        list_score1.sort()
        for k in range(0, list_len):
            if list_score2[k] == list_score1[0]:
                best_name = self.s_name[k]
                print(f'{best_name} {self.m_score[k]} {self.c_score[k]} {self.e_score[k]}', end='')


student = Student(name, math, chinese, english)
student.get_sum()
student.get_best()


测试的输入如下:
Jack Tom Jim
95 84 32
90 75 45
85 90 67

然鹅只通过部分测试点为什么?哪里有纰漏鸭?

Minarui的主页 Minarui | 初学一级 | 园豆:186
提问于:2023-04-02 10:19
< >
分享
最佳答案
1

在 get_sum 方法中,你每次遍历时都将 self.sum_score 累加,导致最终的总分错误。应该将 self.sum_score 初始化为 0,每次遍历时将该学生的总分累加到 list_score1 列表中,最后计算出全班总分并存储到 Student.sum_score 中。

此外,你创建了一个空列表 list_score2,并将其赋值给 list_score1,这导致两个变量指向同一个列表对象。在排序 list_score1 时,list_score2 也会随之改变。你可以在 get_best 方法中创建一个新的列表对象,用于存储排序后的分数列表。

奖励园豆:5
Technologyforgood | 大侠五级 |园豆:7541 | 2023-04-07 21:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册