• 基本统计值计算


    “基本统计值计算” 问题分析

    1.1 问题分析

    基本统计值
    • 需求:给出一组数,对它们有一个概要理解
    总个数,求和,平均值,方差,中位数
    • 总个数(len)
    • 求和:for ... in
    • 平均值:求和/总个数
    • 方差:各数据与平均数差的平方的和的平均数
    • 中位数:排序然后 奇数找中间1个,偶数找中间2个取平均

    二 “基本统计值计算的实例讲解”

    • 获取多数据输入
    • 通过函数分隔功能
    def get_nums():
        """获取数据"""
        nums = []
        num = input('请输入数字:').strip()
        while num != '':
            nums.append(num)
            num = input('请输入数字:').strip()
        return nums
     
     
    def get_len(nums):
        """获取长度"""
        count = 0
        for num in nums:
            count += 1
        return count
    # nums = get_num()
    # print(get_len(nums))
     
     
    def get_add(nums):
        """求和"""
        sum = 0
        for num in nums:
            sum += eval(num)
        return sum
     
    # nums = get_num()
    # print(get_add(nums))
     
    def get_mean(nums):
        """求平均数"""
        sum = 0
        for num in nums:
            sum += eval(num)
        mean = sum/get_len(nums)
        return mean
     
    # nums = get_nums()
    # print(get_mean(nums))
     
    def get_var(nums,mean):
        """求方差"""
        sum = 0
        for num in nums:
            sum += (mean-eval(num))**2
        var =   sum / get_len(nums)
        return var
     
    # nums = get_nums()
    # print(get_var(nums,get_mean(nums)))
     
    def get_median(nums):
        """求中位数"""
        nums_sort = sorted(nums)
        size = get_len(nums)
        if size % 2 == 0:
            med = (eval(nums_sort[size // 2 - 1]) + eval(nums_sort[size // 2])) / 2
        else:
            med = eval(nums_sort[size//2])
        return med
    nums = get_nums()
    print(get_median(nums))
     
    优化版的统计值计算
    def get_nums():
        """获取数据"""
        nums = []
        num = input('请输入数字:').strip()
        while num != '':
            nums.append(num)
            num = input('请输入数字:').strip()
        return nums
     
     
    def get_len(nums):
        """获取长度"""
        count = 0
        for num in nums:
            count += 1
        return count
    # nums = get_num()
    # print(get_len(nums))
     
     
    def get_add(nums):
        """求和"""
        sum = 0
        for num in nums:
            sum += eval(num)
        return sum
     
    # nums = get_num()
    # print(get_add(nums))
     
    def get_mean(nums):
        """求平均数"""
        sum = 0
        for num in nums:
            sum += eval(num)
        mean = sum/get_len(nums)
        return mean
     
    # nums = get_nums()
    # print(get_mean(nums))
     
    def get_var(nums,mean):
        """求方差"""
        sum = 0
        for num in nums:
            sum += (mean-eval(num))**2
        var =   sum / get_len(nums)
        return var
     
    # nums = get_nums()
    # print(get_var(nums,get_mean(nums)))
     
    def get_median(nums):
        """求中位数"""
        nums_sort = sorted(nums)
        size = get_len(nums)
        if size % 2 == 0:
            med = (eval(nums_sort[size // 2 - 1]) + eval(nums_sort[size // 2])) / 2
        else:
            med = eval(nums_sort[size//2])
        return med
    # nums = get_nums()
    # print(get_median(nums))
     
    def run():
        nums = get_nums()
        l1 = ['长度','和','平均值','方差','中位数']
        while True:
            print("欢迎来到数学计算器".center(20,"-"))
            print("""
            1.求长度
            2.求和
            3.求平均值
            4.求方差
            5.求中位数
            6:退出程序
            """)
            choice = input("请输入你的需求:").strip()
            result = 0
            if choice == '1':
                result = get_len(nums)
            elif choice == '2':
                result = get_add(nums)
            elif choice == '3':
                result = get_mean(nums)
            elif choice == '4':
                result = get_var(nums,get_mean(nums))
            elif choice == '5':
                result = get_median(nums)
            elif choice == '6':
                return
            else:
                print('输入格式有误')
                print(result)
            print(f"{l1[eval(choice) -1]}:{result}")
     
    run()
     
  • 相关阅读:
    [Android Pro] 超能RecyclerView组件使用
    [Android Pro] UI设计师不可不知的安卓屏幕知识
    [Android Pro] Android Support 包里究竟有什么
    [Android Pro] fragment中嵌套viewpager,vierpager中有多个fragment,不显示
    [Android Pro] 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
    [Android Pro] sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
    [Android Pro] AndroidStudio导出jar包
    [Java] Java 打包成jar包 和 解压jar包
    [Android Pro] 通过IMSI判断手机是移动、联通、电信
    [MACOS] Mac上的抓包工具Charles
  • 原文地址:https://www.cnblogs.com/everuse/p/11740586.html
Copyright © 2020-2023  润新知