点击“蓝字” 关注我们您好,恭喜您在AI时代关注了数程思维派,我是秦老师。
我们聚焦学以致用与创新,“AI驾驭者”帮助孩子构建驾驭AI而非被替代的能力。
本次Python实战项目是一款双色球历史数据爬取与分析工具,最终能实现从福彩官网爬取指定期数(默认100期)的真实开奖数据,完成数据查看、Excel保存、数据统计分析三大核心功能,还配有可视化图形界面。

我们全程有AI助手陪伴,既能做出可直接操作的桌面程序,还能系统学到爬虫、GUI(图形界面)开发、数据处理等技能,锻炼逻辑思维和问题解决能力。
在前几讲中,我们已经实现了数据的爬取、显示和保存功能,能轻松获取和管理双色球历史数据。
本节课我们将开启数据统计分析学习,编写analysis_datas()函数的核心部分,统计指定期数内每个红球、蓝球的出现次数,并用降序排列显示。
运行函数后,文本框中按降序显示每个红球、蓝球的出现次数,格式整齐。
1. 明确统计需求:
明确我们需要统计指定期数内,33个红球和16个蓝球各自出现的次数,并按出现次数从高到低(降序)排列,方便查看热门号码。
2. 编写统计核心函数:
定义analysis_datas()函数,先清空文本框,获取数据字典,再创建两个空列表,分别存储所有红球和蓝球数据。
3. 统计出现次数:
遍历数据字典,将所有红球、蓝球数据存入对应列表,用count()方法统计每个号码的出现次数,存入字典。
4. 排序并显示结果:
用sorted()函数和lambda匿名函数,对统计结果按出现次数降序排列,格式化后显示到文本框,测试效果并截图保存。
项目完整代码,请参照文末方式获取。
# 双色球分析工具 - 第14讲核心代码# 功能:统计红蓝球出现次数,按降序排列并显示import tkinter as tk# 延续前面代码,get_history_datas、clear_text_widget等函数已创建(省略重复代码)# 数据统计分析函数def analysis_datas(): clear_text_widget() # 清空文本框 data_dict = get_history_datas() # 获取数据字典 red_list = [] # 存储所有红球数据 blue_list = [] # 存储所有蓝球数据 # 1. 遍历数据,收集所有红球和蓝球 for key, value in data_dict.items(): red_ball = value.split(",")[0:-1] # 拆分红球 red_list.extend(red_ball) # 加入红球列表 blue_ball = value.split(",")[-1] # 拆分蓝球 blue_list.append(blue_ball) # 加入蓝球列表 # 2. 统计每个号码的出现次数 red_dict = {} blue_dict = {} # 统计红球(1-33) for i in range(1, 34): i = str(i).zfill(2) # 补零为两位数,与数据格式一致 red_dict[i] = red_list.count(i) # 统计蓝球(1-16) for i in range(1, 17): i = str(i).zfill(2) blue_dict[i] = blue_list.count(i) # 3. 按出现次数降序排列(lambda匿名函数用于指定排序依据) red_dict = sorted(red_dict.items(), key=lambda x: x[1], reverse=True) blue_dict = sorted(blue_dict.items(), key=lambda x: x[1], reverse=True) # 4. 格式化结果并显示到文本框 pz = entry_widget.get() if entry_widget.get() else '100' red_result = f'近{pz}期红色球解析结果(倒序):\n' blue_result = f'近{pz}期蓝色球解析结果(倒序):\n' # 拼接红球统计结果 for k, v in red_dict: red_result += k + " 出现次数:" + str(v) + "\n" # 拼接蓝球统计结果 for k, v in blue_dict: blue_result += k + " 出现次数:" + str(v) + "\n" # 显示到文本框 text_widget.insert('insert', red_result + blue_result)# 绑定函数到“解析数据”按钮(修改第6讲按钮代码)jx_button = tk.Button(root, text="解析数据", cursor='heart', command=analysis_datas)jx_button.grid(row=1, column=0, sticky="W", padx=186, pady=5)
1. 优化统计结果的显示格式,给出现次数最多的3个号码标注“热门号码”,让结果更直观;
2. 处理统计结果中出现次数为0的号码,隐藏这些号码,简化显示内容,提升可读性。
“我正在用Python统计双色球红蓝球出现次数,已经能按降序显示结果,但结果有点繁琐,看不到热门号码。
麻烦帮我优化代码,给出现次数最多的3个红球和3个蓝球标注‘热门号码’,隐藏出现次数为0的号码,给出可直接替换的代码,注释简单易懂。”
你成功用Python实现了红蓝球出现次数的统计与排序,开启了数据统计分析的大门,这是编程能力的重要提升!
统计分析能帮我们从数据中找到规律,而AI可以帮你优化结果显示,让规律更明显。
大胆向AI提出你的需求,主动思考如何让统计结果更实用、更易读,让AI成为你数据分析的好帮手,你会慢慢发现,编程能帮我们解决更多复杂的数据问题。
本节课我们重点学习了列表的extend()、append()、count()方法,掌握了sorted()函数和lambda匿名函数的用法,成功实现了红蓝球出现次数的统计与降序排列。
从技术层面,我们理解了数据统计的基本逻辑,学会了用字典和列表存储、处理统计数据;
从能力层面,我们锻炼了逻辑思维和数据分析能力,学会了从大量数据中提取有用信息,培养了数据思维。
从教育角度,这契合信息时代数据素养的核心培养目标,统计分析的过程,也强化了孩子的归纳思维和逻辑推理能力,让孩子明白,编程不仅能处理数据,还能通过分析数据发现规律,这也是算法思维中“数据驱动、理性分析”的具体体现,为后续优化统计效果、完成项目收官打下基础。
关注公众号,发送关键词“双色球”,免费获取本项目完整代码。数程思维派|专业创造未来
秦老师,211高校计算机专业全日制硕士研究生学历,学信网可查。蓝桥STEM优秀指导教师(证书编号:STEMA160529),拥有多年青少年科技教育一线教学经验,学生曾多次在各类权威科技竞赛中斩获优异成绩。覆盖Scratch/Python/C++编程学习全阶段,接轨CCF/CIE考级竞赛,从基础入门到赛事冲刺,为孩子提供持续、系统的专业指导。数程小达人、AI驾驭者、赛考科学家,拒绝千篇一律的统一课程,对孩子因材施教,让孩子学有所得。欢迎留言了解课程详情。