首页 > 解决方案 > 试图在python中计算平均值

问题描述

所以我是 python 的新手,我正在努力使用新的语法。我正在尝试创建一个脚本,它只为我在函数参数中调用的人数分配一个年龄,打印出每个年龄,然后计算平均年龄。

这是脚本。

import random as rnd

def age_func(size):

    listofAges = []
    totalSum = 0
    average = 0

    for i in range(size):
        ages = rnd.randint(0, 100)
        listofAges.append(ages)
        totalSum += ages
        print('Age is', ages)
    average = totalSum / size
    print('Average age', average)
    print('totalSum', totalSum)
    return listofAges, totalSum, average     
val1, val2, val3 = age_func(6)
print (val2)

所以问题在于totalAges,它不会随着循环的增加而添加每个年龄,因此最终平均值只是最后一个年龄除以总大小。或者我认为,我可能完全以一种糟糕的方式这样做。

标签: python

解决方案


Ralf 给出了您的答案,但我想指出您的代码中可能存在的另一个小错误。我稍微修改了您的代码以显示它,并且还使用了一种更简洁的方法来计算列表的总和和平均值:

import random


def age_func(size):

    age_list = list()

    for _ in range(size):
        age = random.randint(0, 100)
        age_list.append(age)
        print('Age is {}'.format(age))

    average_int = sum(age_list) / len(age_list)
    average_float = float(sum(age_list)) / float(len(age_list))

    print('Average age (int): {}'.format(average_int))
    print('Average age (float): {}'.format(average_float))
    print('total Sum: {}'.format(sum(age_list)))
    return age_list

my_list = age_func(6)
print (sum(my_list))

我改变了一些事情:

  • for _ in range(size)-_用作变量名的意思是“我实际上并没有将这个变量用于任何事情”

  • 导入randomrandom- 确保通过您的代码的任何人都意识到这是默认random模块,而不是某些自定义模块。

  • 到处使用格式字符串——格式字符串是最好的:)

  • 使用sum(age_list)and len(age_list)一旦你的循环完成。无需在循环的每一步都计算这些,只需要一次。

  • 如果您要求 python 将一个整数除以另一个整数,它将返回一个整数。通常,这不是您想要的,就像在这种情况下一样。尝试让 python 进行评估7 / 4,看看会发生什么 :) 通过强制我们的整数变为浮点数,结果也将是浮点数。重试之前的计算7.0 / 4.0

  • 将变量名更改为snake_case


推荐阅读