惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位
罗磊的独立博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
大猫的无限游戏
大猫的无限游戏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园_首页
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
IT之家
IT之家
博客园 - 聂微东
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
S
Security Affairs
宝玉的分享
宝玉的分享
V
V2EX
C
Cisco Blogs
博客园 - Franky
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
S
Securelist
J
Java Code Geeks
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
WordPress大学
WordPress大学
W
WeLiveSecurity
T
Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志

博客园 - ®Geovin Du Dream Park™

go: Functional Options Pattern go:Timing Functions Pattern python: Timing Functions Pattern go: Steady-State Pattern python: Steady-State Pattern go: Handshaking Pattern python: Handshaking Pattern go: Fail-Fast Pattern python: Fail-Fast Pattern I go: Deadline Pattern python: Deadline Pattern go: Circuit-Breaker Pattern python: Circuit-Breaker Pattern go: Bulkheads Pattern python: Bulkheads Pattern go: Push & Pull Pattern python: Push & Pull Pattern python: Publish/Subscribe Pattern II go: Publish/Subscribe Pattern python: Publish/Subscribe Pattern go: Futures & Promises Pattern python: Futures & Promises Pattern go: Worker Pool Pattern go:Pipeline Pattern python: Worker Pool Pattern python: Pipeline Pattern go: Fan-Out Pattern python: Fan-Out Pattern go: Fan-In Pattern python: Fan-In Pattern Fan-In go: Producer Consumer  Pattern python: Producer Consumer Pattern go: Parallelism Pattern python: Parallelism Pattern go: Reactor Pattern python: Reactor Pattern go: Generators Pattern python: speech to text offline python: Generators Pattern go: Coroutines Pattern python:Coroutines Pattern go: Broadcast Pattern python: Broadcast Pattern python: Bounded Parallelism Pattern go: Bounded Parallelism Pattern python: N-Barrier Pattern go: N-Barrier Pattern python: Semaphore Pattern go: Semaphore Pattern python: Read-Write Lock Pattern go: Read-Write Lock Pattern python: Monitor Pattern go: Monitor Pattern python: Mutex Pattern go: Lock/Mutex Pattern Python: Condition Variable Pattern go:Condition Variable Pattern python: Registry Pattern python: Interpreter Pattern go: Interpreter Pattern go: Registry Pattern go: Memento Pattern go: Command Pattern go: State Pattern go:Template Method Pattern go: Strategy Pattern go: Visitor Pattern go: Observer Pattern go: Mediator Pattern go: Iterator Pattern go: Chain of Responsibility Pattern go: Proxy Pattern go:Decorator Pattern go: Facade Pattern go: Flyweight Pattern go: Composite Pattern go: Singleton Pattern go: Prototype Pattern go: Bridge Pattern go: Adapter Pattern go: Builder Pattern 密码进行加盐哈希 using CSharp,Python,Go,Java go: Abstract Factory Pattern go: Model,Interface,DAL ,Factory,BLL using mysql go: Simple Factory Pattern go: Factory Method Pattern go: goLang 在Windows环境搭建Go语言开发环境 CSharp: Parallel Extensions cpp: class python: 蝴蝶跟随鼠标 javascript: 中国历史人物热力分布图using echart javascript: 中国历史人物热力图 python: 初养龙虾微信纯文字自动回复using workBuddy python: Factory Method Pattern python: Simple Factory Pattern python: Abstract Factory Pattern 区域化 代码 python: Null Object Pattern python: Builder Pattern python: Adapter Pattern
python: object 入门
®Geovin Du Dream Park™ · 2026-03-13 · via 博客园 - ®Geovin Du Dream Park™
import pandas as pd

# 1. 定义一个统计类
class DataStats:
    # 初始化:传入数据
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    # 函数1:计算总分
    def calc_total(self):
        self.df["总分"] = self.df["语文"] + self.df["数学"] + self.df["英语"]

    # 函数2:计算平均分
    def calc_avg(self):
        self.df["平均分"] = self.df[["语文", "数学", "英语"]].mean(axis=1).round(2)

    # 函数3:计算排名
    def calc_rank(self):
        self.df["排名"] = self.df["总分"].rank(ascending=False, method="min").astype(int)

    # 函数4:一键输出所有统计
    def show_all_stats(self):
        print("===== 完整成绩表 =====")
        print(self.df)
        print("\n===== 整体统计指标 =====")
        print(self.df.describe().round(2))
# ==============================
# 纯手写统计类:所有算法自己写
# ==============================
class DataStats:
    """

    """
     def __init__(self, data):
        # 直接接收你这种字典格式数据
        self.names = data["姓名"]
        self.chinese = data["语文"]
        self.math = data["数学"]
        self.english = data["英语"]
        self.count = len(self.names)

    # 1. 计算每个人总分(手写)
    def calc_total(self):
        total_list = []
        for c, m, e in zip(self.chinese, self.math, self.english):
            total_list.append(c + m + e)
        return total_list

    # 2. 计算每个人平均分(手写)
    def calc_avg(self):
        totals = self.calc_total()
        avg_list = [round(t / 3, 2) for t in totals]
        return avg_list

    # 3. 排名(手写)
    def calc_rank(self):
        totals = self.calc_total()
        sorted_totals = sorted(totals, reverse=True)
        rank_list = [sorted_totals.index(t) + 1 for t in totals]
        return rank_list

    # 4. 求平均值(手写)
    def get_mean(self, arr):
        return sum(arr) / len(arr)

    # 5. 求最大值(手写)
    def get_max(self, arr):
        max_val = arr[0]
        for num in arr:
            if num > max_val:
                max_val = num
        return max_val

    # 6. 求最小值(手写)
    def get_min(self, arr):
        min_val = arr[0]
        for num in arr:
            if num < min_val:
                min_val = num
        return min_val

    # 7. 求方差(手写)
    def get_var(self, arr):
        mean_val = self.get_mean(arr)
        total = 0
        for num in arr:
            total += (num - mean_val) ** 2
        return total / (len(arr) - 1)

    # 8. 求标准差(手写)
    def get_std(self, arr):
        return self.get_var(arr) ** 0.5

    # 显示所有结果
    def show(self):
        totals = self.calc_total()
        avgs = self.calc_avg()
        ranks = self.calc_rank()

        print("===== 成绩统计结果 =====")
        print(f"{'姓名':<6}{'语文':<6}{'数学':<6}{'英语':<6}{'总分':<6}{'平均分':<8}{'排名'}")
        for i in range(self.count):
            print(f"{self.names[i]:<6}{self.chinese[i]:<6}{self.math[i]:<6}{self.english[i]:<6}"
                  f"{totals[i]:<6}{avgs[i]:<8}{ranks[i]}")

        print("\n===== 整体统计指标(纯手写) =====")
        print("语文平均分:", round(self.get_mean(self.chinese), 2))
        print("数学最高分:", self.get_max(self.math))
        print("英语最低分:", self.get_min(self.english))
        print("总分方差:", round(self.get_var(totals), 2))
        print("总分标准差:", round(self.get_std(totals), 2))
import DataStats
import DataStatsCustomer


class Demo(object):  # 类名首字母大写(PEP8规范)
    """
    平均值计算类:包含4种输入方式计算平均值的方法,以及主程序入口
    """
    def test1(self):
        """功能1:输入三个整数,计算平均值并格式化输出"""
        # 输入三个整数(仅做一次异常校验,报错则返回主菜单)
        try:
            n1 = int(input("输入第一个整数:"))
            n2 = int(input("输入第二个整数:"))
            n3 = int(input("输入第三个整数:"))
        except ValueError:
            print("输入错误!请输入有效的整数,返回主菜单。")
            print("="*50)
            return  # 直接返回,不再执行后续逻辑
        
        c = input("输入填充字符:")
        ave = (n1 + n2 + n3) / 3
        print(f"{n1}+{n2}+{n3} \n平均值:{ave:{c}^30.2f}")
        st = input("请输入一个字符串(可选,按回车跳过):")
        print("="*50)  # 分隔线,提升可读性


    def test2(self):
        """功能2:输入三个浮点数,计算平均值并格式化输出"""
        # 输入三个浮点数,仅做一次异常校验
        try:
            n1 = float(input("输入第一个数(浮点数):"))
            n2 = float(input("输入第二个数(浮点数):"))
            n3 = float(input("输入第三个数(浮点数):"))
        except ValueError:
            print("输入错误!请输入有效的数字,返回主菜单。")
            print("="*50)
            return
        
        c = input("输入填充字符:")
        ave = (n1 + n2 + n3) / 3
        print(f"三个实数:{n1},{n2},{n3}\n平均值:{ave:{c}^30.2f}")
        print("="*50)


    def test3(self):
        """功能3:逐个输入任意类型数(eval解析),计算平均值并格式化输出"""
        # 输入三个数,仅做一次异常校验
        try:
            n1 = eval(input("输入第一个数:"))
            n2 = eval(input("输入第二个数:"))
            n3 = eval(input("第三个数:"))
            # 校验是否为数字类型
            if not (isinstance(n1, (int, float)) and isinstance(n2, (int, float)) and isinstance(n3, (int, float))):
                raise ValueError("输入的不是有效数字")
        except:
            print("输入错误!请输入有效的数字(如10、3.14),返回主菜单。")
            print("="*50)
            return
        
        c = input("输入填充字符:")
        ave = (n1 + n2 + n3) / 3
        print(f"三个实数:{n1},{n2},{n3}\n平均值:{ave:{c}^30.2f}")
        print("="*50)


    def test4(self):
        """功能4:一次性输入三个数(逗号分隔),计算平均值并格式化输出"""
        # 一次性输入三个数,仅做一次异常校验
        try:
            n1, n2, n3 = eval(input("输入三个数(用逗号分隔,如10,20,30):"))
            # 校验是否为数字类型
            if not (isinstance(n1, (int, float)) and isinstance(n2, (int, float)) and isinstance(n3, (int, float))):
                raise ValueError("输入的不是有效数字")
        except:
            print("输入错误!请按格式输入(如10,20,30 或 1.5,2.5,3.0),返回主菜单。")
            print("="*50)
            return
        
        c = input("输入填充字符:")
        ave = (n1 + n2 + n3) / 3
        print(f"三个实数:{n1},{n2},{n3} \n平均值:{ave:{c}^30.2f}")
        print("="*50)
    
    def datademo(self):
        """统计示例"""
        # 准备数据    
        data = {
            "姓名": ["张三", "李四", "王五", "赵六", "钱七"],
            "语文": [85, 92, 78, 90, 88],
            "数学": [90, 85, 92, 76, 89],
            "英语": [88, 79, 95, 85, 92]
        }

        # 创建类的实例
        #stats = DataStats.DataStats(data)
        stats = DataStatsCustomer.DataStats(data)
        # 调用类里的函数
        stats.calc_total()
        stats.calc_avg()
        stats.calc_rank()
        stats.show_all_stats()
      
    
    def main(self):  # 移出嵌套,作为类的独立方法
        """主程序:仅此处保留循环,控制整体流程"""
        print("===== 平均值计算程序 =====")
        print("功能说明:")
        print("1 - 输入三个整数计算平均值")
        print("2 - 输入三个浮点数计算平均值")
        print("3 - 逐个输入任意数字计算平均值(支持整数/浮点数)")
        print("4 - 一次性输入三个数(逗号分隔)计算平均值")
        print("5 - pandas 统计实例")
        print("0/q - 退出程序")
        print("="*50)

        while True:  # 仅主程序保留循环
            # 获取用户选择
            choice = input("请输入功能编号(1/2/3/4),输入0/q退出:").strip().lower()
            
            # 退出条件
            if choice in ["0", "q"]:
                print("程序已退出,感谢使用!")
                break
            
            # 执行对应功能(通过self调用类内方法)
            if choice == "1":
                self.test1()  # 关键修正:类内方法调用必须加self
            elif choice == "2":
                self.test2()
            elif choice == "3":
                self.test3()
            elif choice == "4":
                self.test4()
            elif choice == "5":                
                self.datademo()
            else:
                # 无效输入提示
                print("输入错误!请输入1、2、3、4(退出请输入0或q)。")
                print("="*50)
import pandas
import democlass


# 启动主程序:先实例化类,再调用main方法
if __name__ == "__main__":
    calc_demo = democlass.Demo()  # 创建类的实例
    calc_demo.main()    # 调用实例的main方法

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)