如何在for循环中仅使用特定数量的元素

时间:2014-07-17 15:07:52

标签: python

我在我的101级课程中,我正在操作的指令要求我有一个并行列表。一个列表是学生姓名,第二个列表是学生考试成绩。目标是平均每个学生四个考试成绩并发出一个字母等级。我在这里看到了很多关于将列表作为函数参数传递的主题,但到目前为止,我还没有看到任何解决如何使函数每次迭代只使用列表中一定数量的元素。

现在我的问题是,我正在编写一个函数来平均每个学生四个考试成绩(总共5个学生)。分数存储在20的列表中(我必须拥有的两个并行列表中的一个,另一个是学生姓名)。如何或者我可以编写代码,每次迭代只查看四个列表元素(总共5次迭代)并平均那些?

2 个答案:

答案 0 :(得分:0)

我不确定你在问什么。

有很多方法可以做这样的事情:

for n in xrange(4):
    do_something_with(n)

for i, m in enumerate(list_of_elements):
    do_something_with(m)
    if i == 4:
        break

答案 1 :(得分:0)

我认为这意味着下面的代码......例如......

Students = ["student1", "student2", "student3", "student4", "student5"]
Scores = [12,13,8,15,16,19,18,14,3,15,6,3,9,11,13,5,2,18,3,7]

我们怎样才能“循环”通过列表分数,并打破每个四个元素并计算相应学生的平均值......

为什么不循环学生????

Students = ["student1", "student2", "student3", "student4", "student5"]
Scores = [12,13,8,15,16,19,18,14,3,15,6,3,9,11,13,5,2,18,3,7]

c = 0
Averages = []

for i in range(5):
    s = 0
    for j in range(4):
        s = s + Scores[c]
        c = c+1
    Averages.append(float (s)/4)

print Averages

结果将是:

[12.0, 16.75, 6.75, 9.5, 7.5]

另一方面,如果你只想用一个“for = loop”来解决它,你可以在下面做:

Students = ["student1", "student2", "student3", "student4", "student5"]
Scores = [12,13,8,15,16,19,18,14,3,15,6,3,9,11,13,5,2,18,3,7]


Averages = []
s = 0
for i in range(20):
    if ((i) % 4 == 0 and i > 0):
        Averages.append(float(s) / 4)
        s = 0
    s = s + Scores[i]

print Averages