函数缺少 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