按照题目要求编写的Python程序如下
def calBMI(height,weight):
BMI=weight/(height*height)
return [BMI,"过轻"]
return [BMI,"正常"]
return [BMI,"过重"]
else:
return [BMI,"肥胖"]
import re
s=input("请输入你的身高(米)和体重(公斤)【逗号隔开】:")
s1=re.split(r'[,,]',s)
height=float(s1[0])
weight=float(s1[1])
name="李子健"
bmi=calBMI(height,weight)
print("{}的测算结果为:".format(name))
print(bmi[1])
源代码(注意源代码的缩进)
R编程语言已经成为统计分析中的事实标准.但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易.我要使用Python实现一些离散和连续的概率分布.虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料.在讨论这些概率分布之前,我想简单说说什么是随机变量(random variable).随机变量是对一次试验结果的量化.
举个例子,一个表示抛硬币结果的随机变量可以表示成
Python
X = {1 如果正面朝上,
随机变量是一个变量,它取值于一组可能的值(离散或连续的),并服从某种随机性.随机变量的每个可能取值的都与一个概率相关联.随机变量的所有可能取值和与之相关联的概率就被称为概率分布(probability distributrion).
我鼓励大家仔细研究一下scipy.stats模块.
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布.
离散概率分布也称为概率质量函数(probability mass function).离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分布(Poisson distribution)和几何分布(geometric distribution)等.
连续概率分布也称为概率密度函数(probability density function),它们是具有连续取值(例如一条实线上的值)的函数.正态分布(normal distribution)、指数分布(exponential distribution)和b分布(beta distribution)等都属于连续概率分布.
若想了解更多关于离散和连续随机变量的知识,你可以观看可汗学院关于概率分布的视频.
二项分布(Binomial Distribution)
服从二项分布的随机变量X表示在n个独立的是/非试验中成功的次数,其中每次试验的成功概率为p.
E(X) =?np, Var(X) =?np(1?p)
如果你想知道每个函数的原理,你可以在IPython笔记本中使用help file命令.?E(X)表示分布的期望或平均值.
键入stats.binom?了解二项分布函数binom的更多信息.
二项分布的例子:抛掷10次硬币,恰好两次正面朝上的概率是多少?
您可以使用.rvs函数模拟一个二项随机变量,其中参数size指定你要进行模拟的次数.我让Python返回10000个参数为n和p的二项式随机变量.我将输出这些随机变量的平均值和标准差,然后画出所有的随机变量的直方图.
泊松分布(Poisson Distribution)
一个服从泊松分布的随机变量X,表示在具有比率参数(rate parameter)◆的一段固定时间间隔内,事件发生的次数.参数◆告诉你该事件发生的比率.随机变量X的平均值和方差都是◆.
E(X) =?◆, Var(X) =?◆
你可以看到,事故次数的峰值在均值附近.平均来说,你可以预计事件发生的次数为◆.尝试不同的◆和n的值,然后看看分布的形状是怎么变化的.
现在我来模拟1000个服从泊松分布的随机变量.
正态分布(Normal Distribution)
正态分布的取值可以从负无穷到正无穷.你可以注意到,我用stats.norm.pdf得到正态分布的概率密度函数.
b分布(Beta Distribution)
b分布是一个取值在?[0, 1]?之间的连续分布,它由两个形态参数a和b的取值所刻画.
b分布的形状取决于a和b的值.贝叶斯分析中大量使用了b分布.
当你将参数a和b都设置为1时,该分布又被称为均匀分布(uniform distribution).尝试不同的a和b取值,看看分布的形状是如何变化的.
指数分布(Exponential Distribution)
指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔.比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等.
接着,我在指数分布下模拟1000个随机变量.scale参数表示◆的倒数.函数np.std中,参数ddof等于标准偏差除以 $n-1$ 的值.
结语(Conclusion)
概率分布就像盖房子的蓝图,而随机变量是对试验事件的总结.我建议你去看看哈佛大学数据科学课程的讲座,Joe Blitzstein教授给了一份摘要,包含了你所需要了解的关于统计模型和分布的全部.
代码规范
首先阅读下面的两份规范,并深入理解.
Google SoC 建议的 Python 编码风格:Google Python Style Guide 中文版
写出规范的代码是写出高质量代码的第一步,并且有助于培养仔细的习惯.
空白项目模版
好的开始是成功的一半,写python代码就从pyempty开始吧.
①README.md 这里写你项目的简介,quick start等信息,虽然distutils要求这个文件没有后缀名,但github上如果后缀是.md的话可以直接转换成html显示.
单元测试
Martin Fowler:"在你不知道如何测试代码之前,就不该编写程序.而一旦你完成了程序,测试代码也应该完成.除非测试成功,你不能认为你编写出了可以工作的程序."
我们有很多理由不写单元测试,归根结底是懒,虽然代码大全上说:
但是单元测试还是让别人相信你的代码有很高质量的最有力证据.
好了,请详细阅读:
Unit testing framework 不完整中文版
文档
敏捷开发不是提倡什么文档也不写,没有文档就没有传承和积累,轮岗或新人接手任务就会遇到很大的麻烦,所以我决定每个项目最少要写以下文档:
①nalysis.model.md 概要设计文档,不同于README.md文件,该文档应该写于项目开发之前,把项目有哪些功能,大概分几个模块等项目整体概述信息写一下.
上面这些文档都是项目全局性的文档,不适合写在docstring或注视里,所以要有单独的文档.
打包
python有专门的模块打包系统distutils,你可以用这套机制把你的代码打包并分发到Pypi上,这样任何人都可以用pip或easy_install安装你的模块.
如果你开发的是内部项目,还可以用mypypi架设私有的pypi,然后把项目的大的版本更新发布到内部的pypi上,配置管理人员和运维人员可以很方便的从pypi上拉取代码安装到测试环境或生产环境.
发布大版本的时候要给版本命名及编写ChangeList,可以参考Git Pro的相关章节,主要记住以下几个命令.
git tag -a v0.1 -m 'my test tag' #给大版本命名,打Tag git describe master #给小版本命名,Git将会返回一个字符串,由三部分组成:最近一次标定的版本号,加上自那次标定之后的提交次数,再加上一段SHA-1值 git shortlog --no-merges master --not v0.1 #生成版本简报,ChangeList
python有自己的打包机制,所以一般不要用git archive命令.
当然大版本管理用pypi管理比较合适,小的bug fix,紧急上线等好多公司都是用git直接从生产环境拉代码更新,因为git,svn等可以很方便的撤销某次更新,回滚到某个位置.
关于打包,请阅读如下链接:
Python 打包指南
python打包:分发指定文件
以上就是土嘎嘎小编为大家整理的质量的函数Python相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!