使用 Epley 公式估算 1RM:One-Rep Max Calculator 命令行版与 Tkinter GUI 版源码解析
使用 Epley 公式估算 1RMOne-Rep Max Calculator 命令行版与 Tkinter GUI 版源码解析【免费下载链接】PythonMy Python Examples项目地址: https://gitcode.com/gh_mirrors/py/Python导读本文围绕仓库 nitkarshchourasia/to_sort/one_rep_max_calculator 目录下的 One-Rep Max Calculator 项目展开剖析其基于Epley 公式估算举重动作 1 次最大重复重量1RM的实现方式。项目提供两个版本命令行交互版 one_rep_max_calculator.py 与 Tkinter 图形界面版 one_rep_max_calculator_gui.py。读完本文你将掌握 1RM 估算的数学原理、Epley 公式的 Python 落地写法以及同一算法如何在纯终端与桌面 GUI 两种形态下复用。1RM 是什么为什么需要估算1RMOne-Repetition Maximum单次最大重复重量指某个举重动作中你以标准动作只能完成 1 次的极限重量。它是衡量力量水平最直观的指标常用于跟踪一段训练周期内的力量增长为后续训练计划设定负荷百分比如 70% 1RM、85% 1RM在不冒实际冲击极限重量风险的前提下评估力量。直接实测 1RM 存在受伤风险因此实践中普遍采用公式估算记录一组较轻的重量与可重复次数代入经验公式推算 1RM。这正是本项目两个程序的核心用途。Epley 公式一行的核心算法本项目两个版本均采用Epley 公式其原始出处为 README「References」一节所列文献Epley, B.Poundage chart. In: Boyd Epley Workout. Lincoln, NE: Body Enterprises, 1985. p. 23。Epley 公式的标准形式为1RM 重量 × (1 次数 × 0.0333)即1RM weight × reps × 0.0333 weight。其中 0.0333 是 1/30 的近似值含义是每多完成 1 次重复重量大约可上浮 3.33% 用于估算 1RM。在命令行版源码中该公式被封装为类方法one_rep_max_calculator.py#L20-L24def calculate_one_rep_max(self): Calculates the one-rep max based on the Epley formula. return (self.weight_lifted * self.reps_performed * 0.0333) self.weight_liftedGUI 版中的对应方法几乎一致one_rep_max_calculator_gui.py#L50-L54def calculate_1rm(self): Calculates and returns the estimated 1RM. weight int(self.weight_entry.get()) reps int(self.rep_entry.get()) return (weight * reps * 0.0333) weight两处实现完全等价体现了算法逻辑与界面形态解耦的良好实践核心公式只需一行CLI 与 GUI 各自负责输入采集与结果展示。命令行版本one_rep_max_calculator.py运行环境与启动方式按 README 说明命令行版只需Python 3即可运行无需任何第三方依赖。在仓库根目录执行python nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator.py程序启动后会依次在终端提示输入全部为纯标准库交互。源码结构拆解整个程序围绕单个类OneRepMaxCalculator组织one_rep_max_calculator.py#L1-L31职责划分清晰方法职责对应源码行__init__将weight_lifted、reps_performed初始化为 0L6-L11get_user_input通过input()采集重量与次数L13-L18calculate_one_rep_max代入 Epley 公式计算并返回 1RML20-L24display_one_rep_max格式化输出估算结果L26-L31输入采集使用了int(input(...))强制转换为整数self.weight_lifted int(input(Enter the weight you lifted (in kg): )) self.reps_performed int(input(Enter the number of reps you performed: ))入口采用标准if __name__ __main__:守卫L44-L45调用main()依次执行创建实例 → 获取输入 → 计算并展示三步流程L34-L41def main(): calculator OneRepMaxCalculator() calculator.get_user_input() calculator.display_one_rep_max()这种初始化—输入—计算—展示的线性流程非常适合作为初学者理解面向对象封装的入门范例。一次完整的运行示例假设你卧推 60 kg 完成了 10 次运行效果如下Enter the weight you lifted (in kg): 60 Enter the number of reps you performed: 10 Your estimated one-rep max (1RM) is: 79.98 kg验算60 × 10 × 0.0333 60 79.98即按 Epley 公式该表现对应的 1RM 约为 80 kg。Tkinter 图形界面版one_rep_max_calculator_gui.py运行环境与启动方式GUI 版同样基于 Python 3额外依赖标准库中的Tkinter一般随 Python 官方安装包自带无需单独 pip 安装。启动命令python nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator_gui.py界面布局与交互逻辑程序创建一个标题为 One-Rep Max Calculator、尺寸300x150的主窗口L31-L33自上而下依次放置L36-L48提示标签Enter the weight you lifted (in kg):重量输入框weight_entry提示标签Enter the number of reps you performed:次数输入框rep_entry计算按钮 Calculate绑定display_result回调结果标签与用于显示数值的result_value_label。控件全部采用pack()几何管理器按顺序纵向排布代码直观易读。交互回调机制用户点击按钮后Tkinter 触发display_resultL56-L59def display_result(self): Calculates the 1RM and updates result_value_label with it. one_rep_max self.calculate_1rm() self.result_value_label.config(textf{one_rep_max} kg)它从两个Entry控件取值、调用calculate_1rm()完成 Epley 公式计算再用config(text...)动态更新标签文本——这是 Tkinter 应用中读取输入 → 计算 → 更新界面最典型的回调写法。事件循环由run()方法启动L61-L63def run(self): Runs the Tkinter event loop. self.window.mainloop()入口同样使用if __name__ __main__:守卫L67-L69实例化后直接进入mainloop()。源码注释中的改进方向值得注意的是源码末尾保留了一组面向未来的 TODO 注释L71-L75包括放大字体、使用更好的文本格式、引入深色模式并支持深浅色主题切换。这些注释为读者指明了可以自行练习的扩展点是学习 Tkinter 样式定制与主题切换的良好素材。命令行版与 GUI 版对比维度命令行版GUI 版文件one_rep_max_calculator.pyone_rep_max_calculator_gui.py依赖仅 Python 3 标准库Python 3 Tkinter输入方式终端input()提示Entry输入框 按钮点击输出方式终端print()文本窗口内Label实时更新核心算法(w * r * 0.0333) w(w * r * 0.0333) w一致适用场景脚本化、管道、无头环境交互式桌面使用两个版本共享完全相同的 Epley 公式实现只是壳不同——这恰好演示了同一业务逻辑在 CLI 与 GUI 两种前端下的迁移方式。使用注意事项与已知局限结合源码实现以下几点需要使用者留意输入类型限制两版均用int()强制转换输入。从源码可以推断若输入非整数如小数或字母会直接抛出ValueError程序未做异常捕获与重试提示。单位约定程序提示重量单位为 kg但公式本身与单位无关换成磅lb结果同样成立只是输出标签仍写死为 kg跨单位使用时需自行换算。估算而非实测1RM 是经验公式推算值不同公式如 Brzycki、Lombardi 等结果略有差异Epley 在中等次数范围内约 1–10 次表现稳定。README 的 References 一节提供了该公式的学术出处与延伸阅读材料。重复次数上限次数越高估算误差通常越大建议将程序用于 10 次以内的高质量组记录。在仓库中的位置与延伸阅读本项目位于 nitkarshchourasia/to_sort/one_rep_max_calculator/ 目录归属于仓库中nitkarshchourasia作者的to_sort待整理子目录。仓库根目录 README.md 将其定位为减少人工负担的脚本集合与 Python 入门教学示例本项目正是其中面向健身场景的小型实用工具范例。若要进一步深入可以阅读 one_rep_max_calculator.py 全文体会面向对象封装的四个方法如何各司其职对照 one_rep_max_calculator_gui.py 全文学习 Tkinter 控件的创建、pack布局与command回调绑定结合源码末尾的注释尝试自行扩展深色模式、更大字体等 GUI 增强功能。【免费下载链接】PythonMy Python Examples项目地址: https://gitcode.com/gh_mirrors/py/Python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

一个能看懂显微镜照片、听懂鸟鸣声、读懂地震波的AI科学家

一个能看懂显微镜照片、听懂鸟鸣声、读懂地震波的AI科学家

你有没有想过,一个AI要做科研,到底缺的是什么?大部分人的第一反应是:算力不够,或者模型不够聪明。但2026年这篇论文给出的答案完全不一样。它说,现在那些能自动写论文、自动跑实验的AI科学家系统&#xff0…

2026/9/21 1:21:49 阅读更多 →
Spark 垃圾回收调优:G1GC 配置、堆外内存管理、Full GC 与 OOM 治理

Spark 垃圾回收调优:G1GC 配置、堆外内存管理、Full GC 与 OOM 治理

Spark 垃圾回收调优:G1GC 配置、堆外内存管理、Full GC 与 OOM 治理在现代大数据处理场景中,Apache Spark 作为分布式计算框架被广泛应用。然而,随着数据规模的增长和业务复杂度的提升,内存管理和垃圾回收(GC)问题逐渐成为影响 Sp…

2026/9/21 0:56:19 阅读更多 →
训练会留下指纹:如何仅凭权重判断两个大模型是否“沾亲带故“

训练会留下指纹:如何仅凭权重判断两个大模型是否“沾亲带故“

你有没有想过一个问题:如果你下载了一个开源大模型,改了个名字重新发布,别人能不能看穿这是"抄"来的?不是通过对比它说话的风格,不是通过测试它答题的表现,就是纯粹盯着那一堆权重数字看&#xf…

2026/9/21 0:52:38 阅读更多 →

最新新闻

RV1126平台JD9366触摸屏驱动移植实战指南

RV1126平台JD9366触摸屏驱动移植实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:03:06 阅读更多 →
ESP32-C3+MPU6050 DIY无线空中鼠标:BLE HID姿态解算实战

ESP32-C3+MPU6050 DIY无线空中鼠标:BLE HID姿态解算实战

1. 项目概述与核心思路拆解1.1 这个项目到底在做什么把一块 MPU6050 六轴传感器绑在手指或者手背上,通过 ESP32-C3 读取姿态数据,再用 BLE 把数据发给电脑或手机,让设备把姿态变化识别成鼠标移动和点击——这就是这个 DIY 无线鼠标项目的全部…

2026/9/21 2:03:06 阅读更多 →
CGMA管理会计能力框架:财务人职业成长与数字化转型的导航图

CGMA管理会计能力框架:财务人职业成长与数字化转型的导航图

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:03:06 阅读更多 →
小米游戏鼠标驱动下载与安装深度指南

小米游戏鼠标驱动下载与安装深度指南

1. 项目概述:为什么一个“驱动软件下载”值得单独写一篇深度指南?小米游戏鼠标——驱动软件下载,这八个字看起来平平无奇,甚至有点像搜索引擎里随手点进来的广告跳转页。但作为连续三年深度参与小米生态链外设产品测试、亲手拆解过…

2026/9/21 2:03:06 阅读更多 →
GaussView5入门实战:从分子建模到红外光谱计算全攻略

GaussView5入门实战:从分子建模到红外光谱计算全攻略

简介:《GaussView5基础教程》PDF文档面向量子化学计算新手与分子模拟初学者,定位为GaussView5与Gaussian联用的入门操作指南。教程先介绍软件界面:选择窗口、绘图窗口、菜单栏各项功能,以及快速工具栏中元素周期表、环工具、R基团…

2026/9/21 2:03:06 阅读更多 →
逆向必学:PE文件结构核心字段与加壳脱壳实战解析

逆向必学:PE文件结构核心字段与加壳脱壳实战解析

简介:这份PE文件结构详解PDF对照《加密与破解》第十章,系统梳理Windows下exe、dll、sys等可执行文件的格式规范,适合逆向工程、软件安全、病毒分析初学者,也适合备考事业单位计算机岗位的读者夯实底层基础,还可作为高校…

2026/9/21 2:02:05 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →