加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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,那么您将留下一个列表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读