我是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")
答案 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
。