在元组字典 Python 中查找平均值并计算数学



我想找到学生的考试成绩和硬件的平均值,然后运行一个函数,假设硬件为 20%,测试为 80%,给他们一个最终分数

student_tests = {
'Stan_test': [64, 90, 78, 80],
'Richard_tests': [99, 87, 92, 90],
'Nicole_tests': [6, 66, 6, 66],
'David_tests': [78, 91, 92, 96], }
student_hw = {
'Sten_hw': [100, 90, 85, 99, 46],
'Richard_hw': [96, 66, 94, 77, 88],
'Nicole_hw': [100, 100, 100, 100, 100],
'David_hw': [68, 71, 74, 77, 80] }
results_tests = {}
for k, v in student_tests.items():
if type(v) in [float, int]:
results_tests[k] = v
else:
results_tests[k] = sum(v) / len(v)
print(results_tests)
results_hw = {}
for k, v in student_hw.items():
if type(v) in [float, int]:
results_hw[k] = v
else:
results_hw[k] = sum(v) / len(v)
print(results_hw)
def calculate_average():
for i in results_tests.values():
i = i * 80 / 100
for a in results_hw.values():
a = a * 20 / 100
b = i + a
print(b)
calculate_average()

我将假设分数词典是有序的,即student_hw中的第n个键和student_tests中的第n个键对应于同一个学生。(对于 Python 3.7 及更高版本,字典是按顺序保留的。有关此主题的详细讨论,请参阅此处。

让我们以模块化的方式处理这个问题。我们可以首先定义一个函数,该函数返回给定字典的平均分数,无论是用于测试还是家庭作业。

def get_average(score_dict):
res = []
for score in score_dict.values():
res.append(sum(score) / len(score))
return res

如果您更喜欢单行和短编码,

def short_get_average(score_dict):
return [sum(score) / len(score) for score in score_dict.values()]

使用我们上面定义的函数,我们可以使用 80-20 年级加权公式计算每个学生的总分。

def total_score(hw_scores, test_scores):
return [hw * 0.2 + test * 0.8 for hw, test in zip(hw_scores, test_scores)] 

让我们浏览每个步骤:

hw_scores = get_average(student_hw)
test_scores = get_average(student_tests)
final_scores = total_score(hw_scores, test_scores)

结果:

>>> final_scores
[79.2, 90.44000000000001, 48.8, 86.2]

最新更新