没有合适的资源?快使用搜索试试~ 我知道了~
首页Python Tkinter打造简易概率计算器:新手实践教程
Python Tkinter打造简易概率计算器:新手实践教程
3 下载量 149 浏览量
更新于2024-09-01
收藏 705KB PDF 举报
本篇文章主要介绍了如何使用Python的Tkinter库来创建一个简单的概率计算器,特别适合初学者练习。作者在学习Python的过程中,意识到概率论作业中的公式计算可以通过编程实现,从而决定利用Tkinter设计一个用户界面,方便同学们使用。文章的重点在于实现四种基本概率分布的计算:二项分布、泊松分布、指数分布和正态分布。 在编写计算文件时,作者首先引入了必要的库,如scipy用于计算正态分布的概率密度函数积分,因为Python内置的函数无法直接处理这种情况。scipy库的安装需要额外步骤,但对于非编程新手来说,理解代码应该是相对容易的。作者提供了几个关键函数的定义,例如计算阶乘、最大公因数、约分以及排列和组合公式,这些函数是构建概率计算器的基础。 具体实现中,`deffar(n)`用于计算阶乘,`fractor(a,b)`负责递归求解两个数的最大公因数,`splify(a,b)`则用于约分。`pmt(m,n)`函数计算的是组合数,而`cmb(m,n)`函数则是组合公式的结果。通过这些函数,用户可以通过输入参数值,得到对应概率分布的计算结果。 作者的初衷是提供一个易于使用的工具,但过程中也表达了对未知技术挑战的应对策略和对提高效率的期待。文章的实践性很强,对于想要学习Python编程并应用到实际问题(如概率计算)的新手来说,这是一个很好的学习案例,可以帮助他们掌握基础的Tkinter编程技巧和概率理论知识的实践应用。
资源详情
资源推荐
用用python的的tkinter写一个简单的概率计算器(适合新手练习)写一个简单的概率计算器(适合新手练习)
用用python的的tkinter写一个简单的概率计算器写一个简单的概率计算器
最近刚学python, 肯定还是有很多不足的地方,欢迎大神指正~
2020年4月4日晚,一位小伙正在苦逼地赶着他的概率论作业。看着用过了一次又一次的公式,他陷入了沉思:每个公式只需要两三个参数,然后进行对
应的计算就能拿到结果——这不正好适合编程解决吗?再用tkinter编辑个ui界面发给同学用,岂不是救众生于水火,功德无量吗?就这样,他幻想着同学
们投来崇拜的目光,眼(zui)角流着幸福的泪(kou)水,错过了交作业的最后一点时间……
一一.编写计算文件编写计算文件
工欲善其事,必先写工具。最重要的部分当然是怎么正确地把结果算出来。
我目前学的部分并没有多少,所以我写了二项分布、泊松分布、指数分布、正态分布四个部分。其中正态分布的概率密度函数不能直接积分,所以我用我用
了第三方的库了第三方的库scipy来计算积分。这个库安装还挺麻烦的,需要先安装需要先安装numpy+mkl,需要的小伙伴可以自行百度。只要不是编程小白,应该都能看懂下
面的代码,就不多解释了。
# base.py
E = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178
PI = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825
from scipy.integrate import quad #导入积分函数
#计算阶乘
def far(n):
s = 1
for i in range(1, n+1):
s *= i
return s
#计算最大公因数
def fractor(a, b):
if b:
temp = a % b
return fractor(b, temp)
else:
return a
#约分
def splify(a, b):
x = fractor(a, b)
return [int(a/x), int(b/x)] #排列公式
def pmt(m, n):
s = 1
for i in range(n-m+1, n+1):
s *= i
return s
#组合公式
def cmb(m, n):
return pmt(m, n) // far(m)
#二项分布
def Binomial(p, n):
dic = {}
for i in range(n + 1):
dic[i] = cmb(i, n) * p**i * (1-p)**(n-i)
return dic
#泊松分布
def Poisson(l, k):
return l**k * E**(-1*l) / far(k)
#指数分布
def Exponential(la, x):
return 1 - E**(-1 * la * x)
#标准正态分布
def Nor(x):
coefficient = 1 / ((2 * PI)**(1/2))
f = lambda t : E**(-1 * t*t / 2)
v, err = quad(f, -1000, x) # err为误差
return coefficient * v
#正态分布
def Normal(mu, sigma, x):
z = (x - mu) / sigma
return Nor(z)
if __name__ == "__main__":
pass
二二.编写窗口程序编写窗口程序
其实有了上面那一部分对于我来说已经够用了,但一来刚学了tkinter想练练手,二来谁不想在同学面前装个B 露一手呢?先是编写根窗口,我设置了四个
选项
from tkinter import *
root = Tk()
root.geometry("400x350")
root.title("概率计算器 v1.0内测版")
Button(root, text="二项分布", width=20, height=3).pack(pady=10)
Button(root, text="泊松分布", width=20, height=3).pack(pady=10)
Button(root, text="指数分布", width=20, height=3).pack(pady=10)
Button(root, text="正态分布", width=20, height=3).pack(pady=10)
root.mainloop()
效果呢就是这个样子(有点丑,凑合着看吧):
下载后可阅读完整内容,剩余7页未读,立即下载
weixin_38734276
- 粉丝: 11
- 资源: 902
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功