【问题标题】:Finding average?寻找平均值?
【发布时间】:2021-06-15 00:31:02
【问题描述】:

我是 python 新手,想知道是否有人可以帮我在以下学生的分数列表中找到平均分?请告知我在这里做错了什么。

student_marks = [['Name',  ['A','B','C','D','E']],
                 ['Ankit',  [41, 34, 45, 55, 63]],
                 ['Aravind',[42, 23, 34, 44, 53]],
                 ['Lakshay',[32, 23, 13, 54, 67]],
                 ['Gyan',   [23, 82, 23, 63, 34]],
                 ['Pranav', [21, 23, 25, 56, 56]]
                ]

for student in student_marks[1:]:
    marks_in_C = student[1][2]
    
    print(marks_in_C, end=" ")

total = sum(marks_in_C)

TypeError: 'int' object is not iterable

【问题讨论】:

  • 你期待什么结果,你得到了什么?当您打印marks_in_C 时,它显示了什么?符合您的预期吗?
  • 从您的代码中并不清楚您要平均什么。您只想打印每行的平均值吗?
  • 您似乎想获得沿C 列的学生的平均值。在循环前添加marks_in_C = [] 并将marks_in_C = student[1][2] 替换为marks_in_C.append(student[1][2])。如果您想要平均值,请将avg = total / len(marks_in_C) 放在末尾。
  • 使用statistics 模块。

标签: python sum average


【解决方案1】:

您可以通过以下两种方式找到 C 的平均值:

student_marks = [['Name',  ['A','B','C','D','E']],
                 ['Ankit',  [41, 34, 45, 55, 63]],
                 ['Aravind',[42, 23, 34, 44, 53]],
                 ['Lakshay',[32, 23, 13, 54, 67]],
                 ['Gyan',   [23, 82, 23, 63, 34]],
                 ['Pranav', [21, 23, 25, 56, 56]]
                ]
                
total_C = 0

for [name, [A, B, C, D, E]] in student_marks[1:]:
    total_C += C
    
avg_of_C = total_C / len(student_marks[1:])
print(avg_of_C)

student_marks = [['Name',  ['A','B','C','D','E']],
                 ['Ankit',  [41, 34, 45, 55, 63]],
                 ['Aravind',[42, 23, 34, 44, 53]],
                 ['Lakshay',[32, 23, 13, 54, 67]],
                 ['Gyan',   [23, 82, 23, 63, 34]],
                 ['Pranav', [21, 23, 25, 56, 56]]
                ]
                
marks_in_C = list()

for [name, [A, B, C, D, E]] in student_marks[1:]:
    marks_in_C.append(C)

avg_of_C = sum(marks_in_C) / len(marks_in_C)
print(avg_of_C)

【讨论】:

    【解决方案2】:

    欢迎来到 Python 世界!发生错误是因为您使用 int 类型的数据进行迭代。 sum() 方法需要可迭代的数据,但 marks_in_C 只有一个整数,不能迭代

    我认为您正在尝试使用 marks_in_C 作为列表。你为什么不使用你的循环看起来像这样?

    ...
    marks_in_C = list()
    
    for student in student_marks[1:]:
        marks_in_C.append(student[1][2])
        
        print(marks_in_C, end=" ")
    
    total = sum(marks_in_C)
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 2011-03-07
      • 2014-11-26
      • 2016-09-08
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      相关资源
      最近更新 更多