python中的循环缩进
发布时间:2020-12-20 11:45:59 所属栏目:Python 来源:网络整理
导读:函数avgavg()将一个列表作为输入,该列表的项目是三个数字的列表.每个三位数列表代表特定学生为课程收到的三个等级.例如,这是一个四个学生班级的输入列表: [[95,92,86],[66,75,54],[89,72,100],[34,0]] 函数avgavg()应该在屏幕上打印两行.第一行将包含一个包
函数avgavg()将一个列表作为输入,该列表的项目是三个数字的列表.每个三位数列表代表特定学生为课程收到的三个等级.例如,这是一个四个学生班级的输入列表:
[[95,92,86],[66,75,54],[89,72,100],[34,0]] 函数avgavg()应该在屏幕上打印两行.第一行将包含一个包含每个学生平均成绩的列表.第二行只包含一个数字:平均班级,定义为所有学生平均成绩的平均值. avgavg([[95,0]]) [91.0,65.0,87.0,11.333333333333334] 63.5833333333 下面是我的代码,如果用户输入4个列表,它的工作完全正常,但如果列表小于或大于4则不起作用.你能帮我解决第二部分的循环. def avg(lst): i = 0 A = 0 C = 0 for row in lst : for item in row: B = (lst[i][A]+lst[i][A+1]+lst[i][A+2])/len(lst[i]) D = lst[i][A]+lst[i][A+1]+lst[i][A+2] C = C+D print (B,end=' ') i = i +1 print () E = len(lst[A])+len(lst[A+1])+len(lst[A+2])+len(lst[A+3]) C = C/E print (C) return Output In [163]: lst = [[95,0]] In [164]: avg(lst) 91.0 65.0 87.0 11.333333333333334 63.58333333333333 我试图把E放在循环中,但是我会在改变值的情况下退出索引. 解决方法
您可以使用sum()而不是使用循环,因为您知道每个列表的长度
student_grades = [[95,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 要回答你的问题,虽然你的问题源于这条线 E = len(lst[A])+len(lst[A+1])+len(lst[A+2])+len(lst[A+3]) 你只限于4个列表.由于索引错误,您不能少于4,如果您有超过4,那么您将留下一个列表 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |