python - 试图在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,它不会随着循环的增加而添加每个年龄,因此最终平均值只是最后一个年龄除以总大小。或者我认为,我可能完全以一种糟糕的方式这样做。
解决方案
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)
-_
用作变量名的意思是“我实际上并没有将这个变量用于任何事情”导入
random
为random
- 确保通过您的代码的任何人都意识到这是默认random
模块,而不是某些自定义模块。到处使用格式字符串——格式字符串是最好的:)
使用
sum(age_list)
andlen(age_list)
一旦你的循环完成。无需在循环的每一步都计算这些,只需要一次。如果您要求 python 将一个整数除以另一个整数,它将返回一个整数。通常,这不是您想要的,就像在这种情况下一样。尝试让 python 进行评估
7 / 4
,看看会发生什么 :) 通过强制我们的整数变为浮点数,结果也将是浮点数。重试之前的计算7.0 / 4.0
。将变量名更改为snake_case
推荐阅读
- python - ARIMA Time Series forcecast is constant
- python - 如何通过循环改变单词的长度?
- postgresql - 没有强大权限的受损 postgresql 用户的风险
- python - Python 中的数据框比较给出错误“真值不明确”
- user-interface - 使用 VNC 进行纯 Gui 测试
- android - Java.Lang.NoClassDefFoundError:'解析失败:Landroidx/arch/core/executor/ArchTaskExecutor;'
- powershell - diff哈希表返回值
- excel - 使用 VBA 在 Excel 中将主电子表格拆分为多个工作表
- python - 在 Python 中创建连接的气泡网格图
- c++ - C ++ 11 enable_if在模板参数的下标运算符的返回类型上