方差计算

发布时间 2023-11-09 09:43:43作者: 岌岌可危
import random

def calculate_mean(data):
    return sum(data) / len(data)

def calculate_median(data):

    sorted_data = sorted(data)

    n = len(sorted_data)

    if n % 2 == 0:

        return (sorted_data[n//2 - 1] + sorted_data[n//2]) / 2

    else:

        return sorted_data[n//2]

def calculate_variance(data):

    mean = calculate_mean(data)

    return sum((x - mean) ** 2 for x in data) / len(data)

def calculate_standard_deviation(data):

    variance = calculate_variance(data)

    return variance ** 0.5

class Cal:  # 创建一个人类
    """定义计算类"""
    def __init__(self, data):  # 构造方法
        
        self.data=data
    def run(self):  # 定义跑的方法
        print(self.eye)
    def calculate_mean(self):
        temp=sum(self.data) / len(self.data)
        
        return sum(self.data) / len(self.data)

    def calculate_median(self):
    
        sorted_data = sorted(self.data)
    
        n = len(sorted_data)
    
        if n % 2 == 0:
    
            return (sorted_data[n//2 - 1] + sorted_data[n//2]) / 2
    
        else:
    
            return sorted_data[n//2]
    
    def calculate_variance(self):
    
        mean = calculate_mean(self.data)
    
        return sum((x - mean) ** 2 for x in self.data) / len(self.data)
    
    def calculate_standard_deviation(self):
    
        variance = calculate_variance(self.data)
    
        return variance ** 0.5
        
def main():

    source = input("请选择数据来源: 1.系统自动生成随机数;2.键盘输入一组数据 ")

    if source == '1':

        data = [random.randint(1, 100) for _ in range(11)]

    elif source == '2':

        data = []

        while True:

            try:

                num = input("请输入数字(直接输入回车退出): ")

                if num == '':

                    break

                data.append(float(num))

            except ValueError:

                print("请输入有效数字!")

    else:

        print("输入错误!")

    if data:
        cal1 = Cal(data)  # 创建人类的实例

        mean = calculate_mean(data)

        median = calculate_median(data)

        std_dev = calculate_standard_deviation(data)

        print(f"序列为: {data}, 平均值: {mean:.2f}, 标准差: {std_dev:.2f}, 中位数: {median:.2f}")
        print(f"序列为: {data}, 平均值: {cal1.calculate_mean():.2f}, 标准差: {cal1.calculate_standard_deviation():.2f}, 中位数: {cal1.calculate_median():.2f}")
        #cal1.calculate_mean()
       


if __name__ == "__main__":

    main()