我试过了,但出于某种原因,我的数据排序与学生姓名不一致,我得到的成绩与错误姓名相反

I tried BUT for some reason my data sorting is not aligned with student names and i am getting wrong grades opposite to wrong names

考虑以下数据:

3.85,4.89,2.89,1.02.3.8.3.7,2.9,2.5,3.3,3.59

分别代表以下同学的GPA

"Sia". "Rihanna", "Taline". "Donald", "Sabra","Stefanie","Tome","Jim","Kalim","Wu"

编写一个 python 程序来执行以下操作

  1. 将值保存在名为 studentGrade 的元组中。
  2. 比较 GPA 并找出最高分。
  3. 打印成绩最高的学生姓名。
  4. 找出平均 GPA。
  5. 找出成绩的标准差
  6. 计算 GPA 的中位数
  7. 哪个学生考试不及格(分数必须在4.1以上)

这是我当前的代码

gpa=[3.85,4.89,2.89,1.02,3.8,3.7,2.9,2.5,3.3,3.5]
sortedgrade= sorted(gpa)
print(gpa)

names=['sia','Rihanna','taline','Donald','sarah','stefanie','tome','jim','kalim','wu']

studentgrade=(gpa,names)

max=gpa[0]

for i in range (0,len(gpa)):

    if gpa[i]<max:

        max=gpa[i]

        b=i

        a=max

print(f'max grade =',a)

print(f'{names[b]} scored maximum grade')

问题是,当您对 GPA 进行排序时,它们不再与名称排序相关联 - 您可以简单地跳过这样做,列表索引将保持正确或将它们放入某个集合(说明实际上指定一个 tuple)

# starting values
scores_GPA = [3.85, 4.89, 2.89, 1.02, 3.8, 3.7, 2.9, 2.5, 3.3, 3.5]
names = ["Sia", "Rihanna", "Taline", "Donald", "Sabra", "Stefanie", "Tome", "Jim", "Kalim", "Wu"]
# no need to sort

这些说明也可能意味着将值成对保存在一个元组中,而不是有两个单独的元组

简单元组

>>> (names, scores_GPA)
(['Sia', 'Rihanna', 'Taline', 'Donald', 'Sabra', 'Stefanie', 'Tome', 'Jim', 'Kalim', 'Wu'], [3.85, 4.89, 2.89, 1.02, 3.8, 3.7, 2.9, 2.5, 3.3, 3.5])

元组的元组,保持位置(可能的意图)

>>> tuple(zip(names, scores_GPA))
(('Sia', 3.85), ('Rihanna', 4.89), ('Taline', 2.89), ('Donald', 1.02), ('Sabra', 3.8), ('Stefanie', 3.7), ('Tome', 2.9), ('Jim', 2.5), ('Kalim', 3.3), ('Wu', 3.5))

现在您可以迭代 by-items,将配对放在一起!

>>> name_gpa_tuple = tuple(zip(names, scores_GPA))
>>> for name, gpa in name_gpa_tuple:  # NOTE this unpacks the inner tuple!
...    print(name, gpa)
...
Sia 3.85
Rihanna 4.89
Taline 2.89
Donald 1.02
Sabra 3.8
Stefanie 3.7
Tome 2.9
Jim 2.5
Kalim 3.3
Wu 3.5

或者对您的示例更有用,像这样的结构

max_GPA = -1
for name, gpa in name_gpa_tuple:
    if gpa > max_GPA:
        ...

您可能还会发现创建值的 dictionary 是实用的(因为每个名称都可以是唯一的键并提供 .items() 方法来迭代),但这超出了说明和根据来源的政策,可能会因在作业中聪明或错误而被标记为额外
How do I sort a dictionary by value?