python中的循环缩进

2024-09-29 20:29:55 发布

您现在位置:Python中文网/ 问答频道 /正文

函数avgavg()接受一个列表作为输入,该列表的项是三个数字的列表。每个三个数字的列表代表一个特定的学生在一门课程中获得的三个年级。例如,以下是一个由四名学生组成的班级的输入列表:

 [[95,92,86], [66,75,54],[89, 72,100],[34,0,0]]

函数avgavg()应该在屏幕上打印两行。第一行将包含一个包含每个学生平均成绩的列表。第二行只包含一个数字:班级平均成绩,定义为所有学生平均成绩的平均值。在

^{pr2}$

下面是我的代码,如果用户输入4个列表,它工作得非常好,但如果列表小于或大于4,则无法工作。你能帮我做第二部分的循环吗。在

^{3}$

我试着把E放在循环中,但是我会随着改变值而退出索引。在


Tags: 函数代码用户列表定义屏幕代表数字
3条回答

您可以使用sum(),而不是使用循环,因为您知道每个列表的长度

student_grades = [[95,92,86], [66,75,54],[89, 72,100],[34,0,0]] #this is the list you pass into the function
all_avg = []
for i in student_grades:
    all_avg.append(sum(i)/3.0)

print (sum(all_avg)/len(all_avg))

63.5833333333

回答你的问题,尽管你的问题源于线

^{pr2}$

你把自己限制在4个列表中。由于索引错误,你不能少于4个,如果你有超过4个,那么你将不列出一个列表

这个怎么样?在

def avg(lst):
    return sum(lst)/float(len(lst))

def avgavg(lst):
    courses = [avg(l) for l in lst]
    print(' '.join([str(c) for c in courses]))
    print(avg(courses))

这使用了两个您在代码中没有考虑的东西:列表理解和sum()内置函数。在

def avgavg(grade_list):
    # Creates the list containing the average grade of all students.
    # float() is important or you will only get integers (int / int -> int)
    student_avgs = list(float(sum(grades)) / len(grades) for grades in grade_list)
    # The global avg is the mean of student_avgs.
    global_avg = sum(student_avgs) / len(student_avgs)
    print(student_avgs)
    print(global_avg)

avgavg([[95, 92, 86], [66, 75, 54], [89, 72, 100], [34, 0, 0]])

相关问题 更多 >

    热门问题