函数缺少 1 个必需的位置参数:'lst'
Function missing 1 required positional argument: 'lst'
我是 Python 的新手,我有一个测试要编写一个程序来计算高斯分布的均值和标准差。
我的程序运行正常,但我收到消息说我的功能是
missing 1 required positional argument: 'lst'
我尝试了不同的可能性,google但我不明白错误信息。有谁可以帮助我吗?下面是我的代码:
import random
import statistics
def gaussian_distribution(lst):
mean = 100
sigma = 10
counter = 3
for i in range(0, counter):
temp = random.gauss(mean, sigma)
lst.append(temp)
st_dev = statistics.stdev(lst)
average = statistics.mean(lst)
return average, st_dev
returnvalues = []
liste = [0]
returnvalues = gaussian_distribution(liste)
print("Mean: ", returnvalues[0])
print("Standard Deviation: ", returnvalues[1])
您需要提供一个数字列表,而不仅仅是 liste = [0]
。试试这个:
from statistics import mean, stdev
def gaussian_distribution(lst):
return mean(lst), stdev(lst)
liste = [95,85,80,70,60]
m, sd = gaussian_distribution(liste)
print('The mean is', m)
print('The standard deviation is', sd)
输出
The mean is 78
The standard deviation is 13.509256086106296
编辑:根据OP的更新代码,我做了一些修改。
首先,我将计数器增加到 30,这是接近正态分布的最小值。
其次,变量 st_dev
应该在 for-loop 之外,以便它适用于最终列表(30 个元素)。
第三,不需要将任何列表解析为函数gaussian_distribution()
,因为它旨在生成自己的正态分布随机数列表。
import random
import statistics
def gaussian_distribution():
lst = []
mean = 100
sigma = 10
counter = 30
for i in range(0, counter):
temp = random.gauss(mean, sigma)
lst.append(temp)
st_dev = statistics.stdev(lst)
average = statistics.mean(lst)
return average, st_dev
returnvalues = list(gaussian_distribution())
print("Mean: ", returnvalues[0])
print("Standard Deviation: ", returnvalues[1])
输出
Mean: 101.2713393570188
Standard Deviation: 12.32980977675229
我是 Python 的新手,我有一个测试要编写一个程序来计算高斯分布的均值和标准差。 我的程序运行正常,但我收到消息说我的功能是
missing 1 required positional argument: 'lst'
我尝试了不同的可能性,google但我不明白错误信息。有谁可以帮助我吗?下面是我的代码:
import random
import statistics
def gaussian_distribution(lst):
mean = 100
sigma = 10
counter = 3
for i in range(0, counter):
temp = random.gauss(mean, sigma)
lst.append(temp)
st_dev = statistics.stdev(lst)
average = statistics.mean(lst)
return average, st_dev
returnvalues = []
liste = [0]
returnvalues = gaussian_distribution(liste)
print("Mean: ", returnvalues[0])
print("Standard Deviation: ", returnvalues[1])
您需要提供一个数字列表,而不仅仅是 liste = [0]
。试试这个:
from statistics import mean, stdev
def gaussian_distribution(lst):
return mean(lst), stdev(lst)
liste = [95,85,80,70,60]
m, sd = gaussian_distribution(liste)
print('The mean is', m)
print('The standard deviation is', sd)
输出
The mean is 78
The standard deviation is 13.509256086106296
编辑:根据OP的更新代码,我做了一些修改。
首先,我将计数器增加到 30,这是接近正态分布的最小值。
其次,变量 st_dev
应该在 for-loop 之外,以便它适用于最终列表(30 个元素)。
第三,不需要将任何列表解析为函数gaussian_distribution()
,因为它旨在生成自己的正态分布随机数列表。
import random
import statistics
def gaussian_distribution():
lst = []
mean = 100
sigma = 10
counter = 30
for i in range(0, counter):
temp = random.gauss(mean, sigma)
lst.append(temp)
st_dev = statistics.stdev(lst)
average = statistics.mean(lst)
return average, st_dev
returnvalues = list(gaussian_distribution())
print("Mean: ", returnvalues[0])
print("Standard Deviation: ", returnvalues[1])
输出
Mean: 101.2713393570188
Standard Deviation: 12.32980977675229