第五课:震惊!国外专家研究几十年的体脂率算法居然被陕西一男子十分
今天这节课我们来做一个微小型项目:体脂率计算器。先给大家展示一下成品效果看一下。
(抱歉视频放不进去,想观看的可以关注东东老师讲编程,私信,视频课堂观看呦!)
if......else语句
if翻译过来就是如果,那么else翻译为中文就是否则。我们经常说程序这个词语,其实从广义上来讲,程序无非就因果关系罢了。也就是我们这节课要讲的if.....else语句。可能有的同学还很蒙,啥意思啊?举个简单的例子:如果我是男生,我就去男厕所,否则,我就去女厕所。我相信大部分同学都能明白我说的这句话。那么如果把这句话翻译成代码,那该如何翻译呢?来看下面代码:
# 让用户输入他的性别,并将用户输入的性别
存进'user'这个变量名中
user=input('请输入你的性别:')
# 进行判断:如果用户输入的是'男生'
if user=='男生':
# 输出,进入男厕所
print('进入男厕所')
# 否则
else:
# 输出,进入女厕所
print('进入女厕所')
上面这段代码哪怕我加了注释也许也有一大部分同学看不懂,为什么有的地方加冒号,有的地方不用加?为什么有的地方有空格,有的地方不用,感觉好像看得懂,又好像看不懂。
没关系,我们一点点来解释。实际上去掉那些看不懂的冒号啊,空格什么的,单纯将英文单词翻译过来其实也很好理解:
将用户输入的性别储存进user这个变量名当中,再将变量名拿出去跟’男生‘或者’女生‘作比较,如果跟’男生‘这个字符串进行比较,进而匹配成功,那就进男厕所,否则就进女厕所。
那么这个时候实际上就体现出了python语言的自然性,我们经常听到说python是最接近于自然的语言,换句话说,实际上python就是把我们平常说的话用英文代码的方式表达出来,只不过python多加了一些代码独有的语法罢了,如果将这些语法去掉,那我们再看,实际上就是一句很流畅的人类语言,不信我们将python语法去掉 展现出来看看↓
user=input('请输入你的性别:')
如果user与'男生'相等,输出进入男厕所
if user=='男生',print('进入男厕所')
否则,进入女厕所
else,print('进入女厕所')
就这么简单!
python语法
好,那么接下来讲讲语法。我们说虽然python是最接近自然语言的一个计算机语言,但是他也是有自己的语法的。比如说冒号。
冒号
有的同学看到冒号觉得奇怪,为什么有的地方有冒号,有的地方没有,那么我们到底什么时候应该加冒号,什么时候不加呢?很简单,其实相信细心的同学已经发现了,有判断语句的地方都有冒号,那什么又是判断语句呢?在我们上节课的文章当中,我给大家普及了一个东西叫’比较运算符‘,没有仔细看的同学可以回过去看看比较运算符这一章,比较运算符说白了,其实就是我们数学当中的比大小的大于号小于号等于号而已,最多加了个’!=‘,意思是非等于也就是我们说的不等于的不等号。
那么这么一讲同学们再回去看看刚才的代码,是不是发现,user=='男生'后面带了个小小的冒号呢?那有的同学又说了,老师,else后面没有判断语句啊,那他为啥有,他是充钱玩家?NO NO NO,else虽然后面没有判断语句,但是他也是要有冒号滴,这是党的硬性规定,不明白的回去好好翻翻党章。图片,开玩笑的,其实else后面加冒号就跟1+1=2一样,大家能告诉我为啥1+1=2吗?其实都是一样的道理。并且还有一点必须强调注意:if后面必须加判断语句,而else后面除了冒号,啥也不能加,判断语句也不能加,这也是python的语法。
当然,今天我们也只是说判断语句后面必须加冒号,但并没有说其他的特殊的代码不能加,这个就放到以后遇到了跟大家说明标注一下。
空格
那么空格又是什么语法呢?什么情况下应该加空格,而什么情况下不加空格,其实我觉得加不加空格这个语法,是最容易理解的,至少在我看来是如此。
那大家会看到,在上面代码当中,只有两行代码加了空格,,一个是’print('进入男厕所')‘,另外一个是’print('进入女厕所')‘,这两行代码有一个共同点就是:他们都是判断下的结果。
’print('进入男厕所')‘,是程序判断到用户输入了’男生‘并且跟我们预先设置的’男生‘字符串匹配成功后出现的结果,既然是user=='男生':匹配成功后的结果,那理当在他的判断下空四格,表示进入男厕所这个结果是user=='男生':的匹配成功后干的事儿。那么进入女厕所也是同样的道理,我就不多做赘述了。
if....elif.....else语句
先跟大家解释一下elif,是else与if的结合体,缩写为elif,意思是:否则如果。
那么有的运行过程序的同学同样会发现一件事情就是,我们如果输入’男生‘,那么程序会告诉我们,进入男厕所,但是如果我是女士,我不论输入什么话,他都会出现,进入女厕所。哪怕我们输入‘奥里给’他也会说,进入女厕所,那作为一个程序来说他是很不严谨的,甚至我们可以认为这是个bug,既然是bug,那我们就需要想办法修复他。这个时候就用到我们的if....elif.....else语句了。
经常听鸡汤文的同学可能听过这么一句话:这个世界不是非黑即白的。这句话在我们if....elif.....else语句里面体现的淋漓尽致。而if.....else语句是典型的非黑即白,不是if就是else,反正两个判断结果我占一个。但是if....elif.....else语句出现了中庸之道。
我们程序说,只要你不输男生,哪怕你输入个‘男’而非‘男生’,我都会输出进入女厕所这句话。那这怎么办啊?看下面这段代码:
# 让用户输入他的性别,
并将用户输入的性别存进'user'这个变量名中
user=input('请输入你的性别:')
# 进行判断:如果用户输入的是'男生'
if user=='男生':
# 输出,进入男厕所
print('进入男厕所')
# 否则如果用户输入的是'女生'
elif user=='女生':
# 输出,进入女厕所
print('进入女厕所')
# 否则
else:
# 输出,不要乱输哦
print('不要乱输哦')
其实看完这段代码我相信大部分同学都已经能看明白了,如果用户输入的是’男生‘,那么程序输出,进入男厕所,否则如果用户输入’女生‘,则输出进入女厕所,否则直接告诉用户不要乱输哦。
那么需要注意的是:elif跟if一样,也是必须要在后面加判断语句,而且是强制性的。而且elif的语句与他相对应的判断结果必须是在if与else的中间不可以出现以elif开头或者结尾的现象,否则就会出现语法错误。但是elif可以在中间出现多个elif语句,因为我们一般情况下不可能只有三个选项,也许会有很多个选项,那这个时候,我们就只能在中间有几个选项加几个elif了。举个例子:如果今天是礼拜一,那么我就去跟马云谈谈生意,否则如果今天是礼拜二,那么我就跟迪丽热巴去三亚游泳,否则如果今天是礼拜三,我就去我在澳洲的私人别墅打王者荣耀,否则如果今天是礼拜四,那么我就去跟特朗普谈谈美国疫情的事儿,否则如果今天是礼拜五,那么我就去跟迪迦奥特曼说说保卫地球的事儿,否则我就告诉玩家不要乱输,没有其他安排了,那有的同学问我,为啥没有周六周天----------对不起因为我实在编不下去了。
课后练习
在我们生活当中,有许多同学因为自己的体重发愁,有的人怎么吃都吃不胖,有的人却喝口水都长肉,那我们如何去用最科学的方式来定义自己是胖是瘦呢?在我们国际惯例当中,有一个值叫BMI值,这个BMI值就是用最科学的方式来计算我们身材的胖瘦的。BMI具体的计算公式就是:体重(kg)/身高(m)*身高。也就是用我们每个人的具体体重除以身高的平方。那么如何利用BMI看胖瘦呢?看下面:
成人的BMI数值:
过轻:低于18.5
正常:18.5-25
过重:25-28
肥胖:28-32
非常肥胖, 高于32
那么接下来我们就用代码将这个程序做出来,那么最终效果可以参照开头的视频。
eval()函数
下面这个程序可能有两个点大家不太懂,第一个是eval()函数。eval()函数其实他的作用很简单。
我们一般情况下input()函数用户输入的数字,例如说用户的体重是83公斤,那么假如说他输入了83,input()函数会自动将用户输入的83这个数字带上引号变成字符串变量,那我们之前说过,不论是整数也好,抑或是小数也好,只要它带上引号,那么他就是字符串,字符串我们说是不能够进行加减乘除这样的数学运算的。用字符串进行加减乘除会出现语法报错。那我们想让用户输入的数字变成整数类型怎么办,看下面:
我们之前说过int()除了是整型类型的缩写以外,他还是我们python当中的函数保留字,他的作用就是将带有引号的数字强制转换为整数,同样的浮点数类型float()函数也是同样的道理,意味着将字符串类型强制转换为小数。
那么这个时候问题来了,有的同学的体重是整数,有的同学的体重是小数,我们在input()前面加int()也不是,加float()也不是,为了数据的准确性我们只能加eval()函数,eval()函数的特性就是可以兼顾浮点数跟整数两种类型,也就是说,我们的用户不论输入小数或者整数,只要有eval()函数,他都可以兼容。
BMI算法
如果经常看书的同学或者经常看类似视频的同学一定会听过一个词语叫算法。那本节课我们也有一个算法是BMI算法,当然这个BMI算法是百度过来的是固定的公式。但是大家内心一定要有算法这个概念。那么下面的代码流程的话其实也很简单:
第一步:让用户输入他的个人数据,包括体重与身高。
第二步:然后我们将用户输进来的两个参数赋值给weight与height这两个变量名。
第三步:再将这两个已经有值的变量名套进BMI公式。套完以后再将这个公式的最终计算答案赋值给BMI这个变量名。
第四步:利用BMI进行判断,判断他的计算结果的区域,再通过不同的区域,去进行具体的操作。
具体代码如下:
weight=eval(input('输入您的体重(kg):'))
hight=eval(input('输入您的身高(m):'))
BMI=weight/hight**2
if BMI>32:
print('过于肥胖')
elif 32>BMI>=28:
print('肥胖')
elif 28>BMI>=25:
print('稍重')
elif 25>BMI>=18.5:
print('正常')
elif 18.5>BMI:
print('过轻')
else:
print('不要乱输')
好的,这期就到这里啦,我们下期见,拜拜!