一,思路。
(1)获取数据(数据类型应该是数值型)
(2)求平均值---初步想法
①:for循环遍历求和;
②:sum()函数直接求和
(3)求方差---貌似只想到了遍历求
(4)求众数---首先想到count函数---比较
(5)求中位数---排序
①奇数个---中间的一个;
②偶数个---中间两个数的平均
二,执行。
#(1)获取数据
# 用什么存储?不定长---可变(列表,集合,字典);可能有重复值---排除集合;没必要设置键---排除字典。----敲定列表
# 列表长度未知---input()函数一次只能获取一个值---while循环获取,设定判断是否输入结束(这里设置为‘#’)
def getdata():
a_list=[]
temp=input("Please input a data:")
while temp!="#":
a_list.append(eval(temp))
temp = input("Please input a data:")
print("The data is :",a_list)
return a_list
#(2)求平均数
def Average(t):
Sum=sum(t) #求和
Count=len(t) #求个数
average=Sum/Count #算平均数
print("The average is :",average)
return average
#(3)求方差
def Variance(t,avg):
SquareSum=0
for i in t:
SquareSum+=(i-avg)**2
variance=SquareSum/len(t)
print("The variance is :",variance)
return variance
#(4)求众数:
# 获取每个数出现的次数---比较---替换
def Mode(t):
MaxCount=0
mode=0
for i in t:
icount=t.count(i)
if icount>MaxCount:
MaxCount=icount
mode=i
print("The mode is :",mode)
return(mode)
#(5)求中位数
# ①sort()函数排序
# ②除以2判断个数是否为奇数
# ③奇数--当前结果作为下标对应的数
# ④偶数--去中间两个数求平均
def MedianNumber(t):
temp=t.copy() #为了不改变原列表---复制一个列表(虽然对这题来说没啥用)
temp.sort()
#print(temp)
if len(temp)%2==1:
Mindex=int((len(temp)+1)/2)
print("The median number is:",temp[Mindex])
return temp[Mindex]
else:
index0=int(len(temp)/2)-1
index1=int(len(temp)/2)
print("The median number id:",(temp[index0]+temp[index1])/2)
return (temp[index0]+temp[index1])/2
#主函数
def main():
getlist=getdata() #获取数据
avg=Average(getlist) #求平均数
vari=Variance(getlist,avg) #求方差
mod=Mode(getlist) #求众数
med=MedianNumber(getlist) #求中位数
if __name__=="__main__":
main()