如何在一组班级平均分中显示最大和最小平均值

0 投票
1 回答
1813 浏览
提问于 2025-04-17 16:24

我正在用Python写一个程序,让用户输入班级里学生的数量,然后为每个学生输入3个考试成绩。这个程序还需要显示每个学生的考试平均分、班级的平均分,以及班级里的最高和最低平均分。目前,我遇到的问题是,每个学生的成绩和平均分打印出来后,班级的平均分也会被打印出来,这让我很困扰。另外,我也搞不定最高和最低平均分,因为它们会随着每个学生的平均分而变化。

students=int(input('Please enter the number of students in the class: '))

for number in range(students):

    class_average == 0 

    first_grade=int(input("Enter student's first grade: "))
    second_grade=int(input("Enter student's second grade: "))
    third_grade=int(input("Enter student's third grade: "))


    StudentAverage=(first_grade + second_grade + third_grade)/3
    print("The student's average is", round(StudentAverage,2))



    class_average= class_average + StudentAverage
    print("The class average is", round(class_average/students,2))



maximum_num = 0

if StudentAverage > maximum_num:
    maximum= StudentAverage
    print("The maxiumum average is", round(maximum,2))


minimum_num = 100

if StudentAverage < minimum_num:
    minimum= StudentAverage
    print("The minimum average is", round(minimum,2))

1 个回答

2

我把你的初始化部分放到了循环外面,这样每次循环的时候值就不会重置了。我把最大值和最小值的比较放到了循环里面,并且替换了最大值和最小值的变量。每次新来的值都比这些值小或大,所以需要用最大值和最小值的变量来代替。运行中的班级平均分太低了,因为它用的是学生的总数,而不是当前计算出来的数量。我把学生的数量替换成了number+1。我觉得这就是你想要的代码。

students=int(input('Please enter the number of students in the class: '))
class_average = 0 
maximum_num = 0
minimum_num = 100
for number in range(students):

  first_grade=int(input("Enter student's first grade: "))
  second_grade=int(input("Enter student's second grade: "))
  third_grade=int(input("Enter student's third grade: "))

  StudentAverage=(first_grade + second_grade + third_grade)/3
  print("The student's average is", round(StudentAverage,2))

  class_average= class_average + StudentAverage
  print("The class average is", round(class_average/(number+1),2))

  if StudentAverage > maximum_num:
    maximum_num = StudentAverage

  if StudentAverage < minimum_num:
    minimum_num = StudentAverage
print("The minimum average is", round(minimum_num,2))
print("The maxiumum average is", round(maximum_num,2))

撰写回答