我试图写一个程序,我需要能够输入5个学生的分数,跨越4个不同的科目,然后输出最高的平均分数的学生和科目。
所需的输入和输出是:
Student 1 (courses 1-4): 50 60 70 60
Student 2 (courses 1-4): 100 90 87 90
Student 3 (courses 1-4): 70 100 90 90
Student 4 (courses 1-4): 30 65 50 50
Student 5 (courses 1-4): 58 50 74 43
The highest average mark of students: 91.75
The highest average mark of courses: 74.2
目前的代码,我有计算为一个科目,而不是4。我如何能够进入4个年级的每个学生,以获得我想要的输出。
请参阅下面的代码:
m1 = int(input("Student 1 (courses 1-4): "))
m2 = int(input("Student 2 (courses 1-4): "))
m3 = int(input("Student 3 (courses 1-4): "))
m4 = int(input("Student 4 (courses 1-4): "))
m5 = int(input("Student 5 (courses 1-4): "))
avg = (m1 + m2+ m3+ m4 + m5) / 5;
avg1 =(m1 + m2+ m3+ m4 + m5) / 20;
print("The Highest average mark of students =", avg)
print("The Highest average mark of courses =", avg1)
发布于 2022-04-26 05:09:21
首先,创建一本字典,为每个学生输入分数。让我们称它为d_marks
。创建一本字典,以获得所有学生的平均水平。我们叫它avg_marks
吧。创建一本字典,以获得所有课程的总分。我们叫它avg_course
吧。在那之后得到他们的max
。以下是你如何做到的:
d_marks = {}
avg_marks = {}
avg_course = {}
for i in range(1,6): # We loop for 5 students
d_marks[f'Student {i} (courses 1-4)'] = list(map(int, input(f"Student {i} (courses 1-4): ").split())) # Split the string and creates an integer list
avg_marks[f'Average of Student {i}'] = sum(d_marks[f'Student {i} (courses 1-4)']) / len(d_marks[f'Student {i} (courses 1-4)']) #Create average dictionary for Students
for j in range(1, len(d_marks[f'Student {i} (courses 1-4)'])+1):
if f'Course {j} sum' in avg_course: # if course sum already in dictionary then add it to previous.
avg_course[f'Course {j} sum'] += d_marks[f'Student {i} (courses 1-4)'][j-1]
else:
avg_course[f'Course {j} sum'] = d_marks[f'Student {i} (courses 1-4)'][j-1] # if course sum not in dictionary then create one.
print("The Highest average mark of students =", max(avg_marks.values()))
print("The Highest average mark of courses =", max(avg_course.values())/ len(d_marks))
输出:
Student 1 (courses 1-4): 50 60 70 60
Student 2 (courses 1-4): 100 90 87 90
Student 3 (courses 1-4): 70 100 90 90
Student 4 (courses 1-4): 30 65 50 50
Student 5 (courses 1-4): 58 50 74 43
The Highest average mark of students = 91.75
The Highest average mark of courses = 74.2
发布于 2022-04-26 04:19:59
这段代码起作用,
import pandas as pd
import numpy as np
# Part 1
student_num = 5
all_marks = []
for i in range(student_num):
marks = input(f"Student {i + 1} (courses 1-4): ")
all_marks.append(list(map(float, marks.split(" "))))
# Part 2
df = pd.DataFrame(all_marks, columns = ['Marks'])
course_avg = df.Marks.apply(np.mean)
student_avg = df.Marks.apply(np.mean, axis = 1)
代码的第一部分将输入转换为数字,并将它们存储到列表中。在第2部分中,这个列表被转换成一个数据框架。我首先在列上应用np.mean
来查找每门课程的平均值,然后在行上找到每个学生的平均值。
您可以使用idxmax()
在course_avg
和student_avg
上查找最大平均值的索引,并相应地找到平均水平最高的课程/学生。
(最好直接将值存储在.xlsx或.csv文件中,而不是以这种方式通过.csv输入它们。拥有这些文件后,只需根据文件的格式以 pd.read_csv()
或pd.read_csv()
传递文件路径。)。
https://stackoverflow.com/questions/72008244
复制相似问题