你的getNum函数有问题,永远只能返回长度为1的list:
def getNum():
nums = []
iNumStr = input("please:")
while iNumStr != "":
nums.append(eval(iNumStr))
iNumStr = input("please:")
return nums
报错的原因是发生了除0错误,具体是getNum()函数里,将返回列表放到了for循环里面,所以getNum()获取一个整数就返回了,然后dev 函数里len(numbers)-1就为0,进行除法运算,就发生了除0错误,所以就报错了;
然后还有其他地方需要修改下。
修改如下:
参考链接:
https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E5%B7%AE/1415772
def getNum():
nums=[]
iNumStr = input("请输入数字(回车退出):")
while iNumStr != "":
nums.append(eval(iNumStr))
iNumStr=input("请输入数字(回车退出):")
return nums # 循环结束,再将输入的数字列表返回
# 求平均值
def mean(numbers):
s=0.0
for num in numbers:
s+=num # 将列表numbers中的数字都累加到和s中
return s/len(numbers) # 同上,循环结束,计算完总和,再将计算出的平均值返回
# https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E5%B7%AE/1415772
# 这里应该是求样本标准差
def dev(numbers,mean):
sdev=0.0
for num in numbers:
sdev = sdev +(num-mean)**2
return pow(sdev/(len(numbers)-1),0.5)
# 求中位数
def median(numbers):
# https://www.runoob.com/python/python-func-sorted.html
numbers=sorted(numbers) # 这里应该需要将排序后的结果再赋值给numbers
size = len(numbers)
if size % 2==0:
med = (numbers[size//2-1]+numbers[size//2])/2
else:
med = (numbers[size//2])
return med
n = getNum()
m = mean(n)
#med改为median
print("平均值:{}, 方差:{}, 中位数{}".format(m,dev(n,m),median(n)))
【以下回答由 GPT 生成】
这是一个Markdown格式的文本片段,但是其中的图片标签并没有提供图片的路径(src属性为空)。因此,在加载图片时会报错。
要解决这个问题,你可以将正确的图片路径填入src属性中。例如:
<p></p><p class="md_img_container"><img class="md_img" src="path/to/image1.jpg" alt="img" align="left" /></p><p></p>
<p></p><p class="md_img_container"><img class="md_img" src="path/to/image2.jpg" alt="img" align="left" /></p><br />
请确保将"path/to/image1.jpg"和"path/to/image2.jpg"替换为真实的图片路径。如果图片位于与代码文件相同的目录中,可以使用相对路径,否则需要提供完整的绝对路径。
【相关推荐】
没有将输入的文字(str类型)
转化为你要的类型