[英]how do i calculate the average number in a list of number
一切都在工作,除了最后几行,我得到一个类型错误。 不确定哪种数据类型需要更改。 有任何想法吗? 该程序只需滚动两个骰子并计算100个卷中的平均数。
#two dice roll with average of rolls
import random
total=[]
def roll():
for i in range(100):
roll_d=random.randint(1,6), random.randint(1,6)
total.append(roll_d)
print(roll_d)
def main():
roll()
s=sum(total)
average=s/100.0
print(average)
main()
每个元素total
是两个整数的元组 。
您必须定义如何将这些元组求和。 也许你想单独添加卷:
def roll():
for i in range(100):
roll_d=random.randint(1,6), random.randint(1,6)
total.extend(roll_d)
print(roll_d)
这里total.extend()
将两个卷分别传递给total
列表。 或者您可能需要存储卷的总和 :
def roll():
for i in range(100):
roll_d=random.randint(1,6), random.randint(1,6)
total.append(roll_d[0] + roll_d[1])
print(roll_d)
如果您确实希望保持成对存储卷,则需要调整sum()
调用以对各个卷号进行求和:
s = sum(r for pair in total for r in pair)
作为建议,使用numpy
数组而不是列表:
import numpy as np
total = np.random.randint( low=1, high=6+1, size=(100,2) ) # 100 by 2 array
total.mean( ) # average of all values ( 1 number)
total.mean( axis=0 ) # average of each column ( 2 numbers)
total.mean( axis=1 ) # average of each row ( 100 numbers)
有很多方法:
print reduce(lambda x, y: x + y, total)/(len(total)*1.0)
要么
sum(total)/(len(total)*1.0)
1.0是为了确保你得到一个浮点除法
或使用numpy:
import numpy as np
print np.mean(total)
正如马丁指出的那样,总数的元素是元组 - 每个骰子卷(前 - (3,4)
, (1,1)
等)
所以,如果我理解你的意图,你也需要将它们加在一起。 你不能直接在元组上求和。
以下内容将在找到总和之前将每个卷添加到一起:
s = sum(map(lambda x: x[0]+x[1], total))
请不要硬编码100.0
。 使用类似s*1.0/len(total)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.