当前位置: 首页 > 知识库问答 >
问题:

计算列表中50或以上的所有数字的平均值?

丁业
2023-03-14

我想返回一个函数,它给出所有50或更多标记的平均值。当我运行代码时,它总是返回一个空列表。

以下是我尝试过的:

def get_pass_average(marks):
    average = []
    for count in marks:
        if count >= 50:
           average = sum(count) / len(count)          
    return round(average,2)

def test_get_pass_average():
    list1 = [50, 83, 26, 65, 92, 29, 77, 64]
    print('%.2f' % (get_pass_average(list1)))

请帮我找出代码中的问题,输出应该是71.83

共有3个答案

林冥夜
2023-03-14

要回答以下问题:

请帮我找出代码中的问题

问题在于:

for count in marks
    if count >= 50:
        average = sum( count ) / len( count )

标记是一个整数列表。因此,当您在标记中循环计数时,count的值是一个整数。我在Python 3.6.3和2.7.10中测试了你的代码,你甚至不能对整数调用sum()len()函数(如果你尝试的话,它们都会返回TypeError)。

你初始化了average=[],所以你似乎希望average包含一个列表,但即使sum(count)=countlen(count)=1,那么average也包含一个整数,而不是列表。

我很想知道您使用的是哪种版本的Python,它允许代码无误地执行

已经对这些错误进行了更正。

壤驷华美
2023-03-14

除了U9 Forward的答案外,还可以使用过滤器平均值

from statistics import mean

list1 = [50, 83, 26, 65, 92, 29, 77, 64]
average = mean(filter((50).__le__, list1))
print('%.2f' % average)
毕胡非
2023-03-14

试试这个:

l=[i for i in list1 if i>=50]
print(sum(l)/len(l))

或:

from statistics import mean
l=[i for i in list1 if i>=50]
print(mean(l))

如果要条件为空列表:

l=[i for i in list1 if i>=50]
if l:
    print(sum(l)/len(l))

或:

from statistics import mean
l=[i for i in list1 if i>=50]
if l:
    print(mean(l))

对于python 2:

print(sum(l)/len(l))

应该是:

print(float(sum(l))/float(len(l)))

没有统计模块。

你的代码不起作用,因为你对迭代器(一个整数)求和,而不是对列表求和,所以它不起作用

 类似资料:
  • 问题内容: 我正在尝试使用下面的代码来计算用户输入的一组值的平均值,并将其显示在中,但它无法正常工作。假设用户输入7、4和5,该程序在应显示5.3时显示平均值。 代码有什么问题? 问题答案: 当您拥有增强的for循环时,为什么还要对索引使用笨拙的for循环?

  • 我们的教授在一个文本文件中给了我们一份982个数字的列表,我们已经阅读了文件中的文本,并打印出了一些关于数字的信息。到目前为止,除了奇数的总数之外,我的一切都是正确的(她给了我们正确的答案)。我不知道如何得到奇数的平均值,即48201.56。 我一直得到的结果是97354,这很奇怪,因为我用的方法和所有数字的平均值和偶数的平均值是一样的。 我想知道为什么“总平均数”的答案不是48201.56。谢谢

  • 我试图使用下面的代码来计算用户输入的一组值的平均值,并将其显示在中,但它不能正常工作。例如,用户输入7、4和5,程序显示1作为平均值,而它应该显示5.3

  • 本文向大家介绍awk 根据表格数据计算列中的平均值,包括了awk 根据表格数据计算列中的平均值的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个;用作列定界符的文件。我们使用以下程序在第二列中计算值的平均值,提供的输入是学生组的成绩列表: 该程序的输出为2.125。 请记住,它NR保存了要处理的行数,END因此在块中它保存了文件中的总行数。 请记住,在许多应用程序(监视,统计)中,中位数是更

  • 我一直在尝试编写一些代码来使用MapReduce查找数字的平均值。 我尝试使用全局计数器来实现我的目标,但是我无法在映射器的< code>map方法中设置计数器值,也无法在缩减器的< code>reduce方法中检索计数器值。 我是否必须在< code>map中使用全局计数器(例如,通过使用所提供的< code>Reporter的< code>incrCounter(key,amount))?或者

  • 问题内容: Y1961 Y1962 Y1963 Y1964 Y1965 Region 0 82.567307 83.104757 83.183700 83.030338 82.831958 US 1 2.699372 2.610110 2.587919 2.696451 2.846247 US 2 14.131355 13.690028 13.599516 13.649176 13.649046