Python函数获得最低和平均分

时间:2013-11-02 17:07:21

标签: python

我是python编程的新手。我正在上课作业并且到目前为止得到了下面的代码。正在努力的下一步是写一个能显示/打印最低分和平均分的功能。任何方向都会非常感激。

scores = """Aturing:Mark$86:
Inewton:Mark$67.5:
Cdarwin:Mark$90:
Fnightingale:Mark$99:
Cvraman:Mark$10:"""

students = {}
for studentdata in scores.split('\n'):
data = studentdata.split(':')
name = data[0]
students[name] = {}
for class_data in data[1:]:
    if class_data:
        Mark,class_score = class_data.split('$')
        students[name][Mark] = class_score

def Grade_Show(student,Mark):
    if student in students:
        if Mark in students[student]:
            print "Student %s got %s in the assignment %s" % (student,students[student][Mark],Mark)
        else:
            print "subject %s not found for student %s" % (Mark,student)
    else:
        print "student %s not found" % (student)

#do some testing
Grade_Show("Inewton","Mark")

2 个答案:

答案 0 :(得分:0)

  

正在努力的下一步是写一个函数   显示/打印最低分和平均分。

第1步:

您可以只遍历数据结构(students)和print吗?如果你能做到这一点,那么你应该能够通过并找到最低分。

要找到最低分,请从一些想象的最大可能值开始(设置一些变量等于100,例如,如果这是最高的)并迭代所有分数(for score in score...等),测试以查看您获得的每个值是否低于您创建的变量。

如果它更低,则使您创建的变量等于该较低值。之后,它将继续迭代以查看是否有任何新值小于这个新的“最低”值。到达结束时,它应该为您提供最低值。

一个棘手的部分是确保打印名称和最低值,如果这是问题所需。

步骤:2

要解决平均问题,你可以做类似的事情,你可以迭代分数,将它们添加到新的数据结构中,然后弄清楚如何取平均值。

答案 1 :(得分:0)

使用scores = {'alex': 1, 'dave': 1, 'mike': 2};

进行测试

首先,要找到最低分,请使用min()函数。

所以:

min_keys = [k for k, x in scores.items() if not any(y < x for y in scores.values())]

print('Lowest score:', str(min(scores.values())) + '.', 'Achieved by: ')
for student in min_keys:
    print(student)

输出:

Lowest score: 1. Achieved by: 
alex
dave

其次,假设您正在寻找平均值,您可以这样做:

print('The average score was:', str(sum(scores.values()) / len(scores)))

输出:

The average score was: 1.3333333333333333

希望我帮助过! - 您现在需要做的就是创建一个包含该代码的函数,并使用一个名为data的参数。这样,您可以使用多个词典来表示不同的类或测试。您可以使用score替换代码中data的所有实例。

此外,可以轻松修改“最低分数”代码以获得最高分数。最后,根据程序的大小,您可以将输出存储在变量中,而不是使用print语句,以便稍后调用它。这也意味着您应该return结果,而不是print