全站导航

当前位置:首页/ 教育教学/ python专栏>正文

python专栏

Python小课(3)

人气指数: 次  发布时间:2020年10月28日

https://mp.weixin.qq.com/s/NufIuwsHHXITgX5g-1oREQ


Hi,很高兴见到你,恭喜你成功抵达第三关!👍

前两关中,我们跟着至尊宝,学会了使用 Python 基本语句,调用 Python 的内置函数 print();跟着孔明一起,理解了数据类型的概念,包括字符串、整数、浮点数这三种类型。

我们再来通过上一关的知识点小结回顾一下:


在开始今天的课程之前,咱们先来做道题热热身吧~

单选题

考验眼力的时候到了!请仔细阅读下面这段代码,选出其中 没有错误 的代码。


恭喜你答对了,真棒。看来第二关的知识已经难不住你了,准备接受新的挑战吧~

今天我们将开始学习程序逻辑——条件判断。学会了条件判断后,我们的程序将不再单一,变得智能起来!

前几天老师的智能家居设备中新添了一样小玩意儿——空调伴侣,能根据室内温度的高低,控制空调的开关。

我的设定是,如果室内温度低于 32 度,就不做操作,如果室温高于 32 度,就自动打开空调。这个 如果...就... 的逻辑就是条件判断。

当今我们的世界到处都是智能设备,极大地方便了我们的生活,而 如果...就... 这种最基本的条件判断,就是这一切的基础。

编程世界也是一样,条件判断非常重要。Python 碰到表示条件判断的语句的时候,它会先判断是否符合条件,如果符合,那就执行对应的代码。

最简单的例子是,如果一个数字大于 0,就让 Python 打印“这个数字是正数”。

接下来我们一起进入《阿gan正传》的故事,通过阿gan的成长历程来学习如何让程序作出判断。

示:没看过《阿gan正传》也不影响课程学习哦。


编程练习

阿甘,全名福瑞斯特·甘,从小只有 75 的IQ,他的背部骨骼长歪了,必须依靠支架才可以勉强走路,阿甘和妈妈相依为命。


老师用 Python 实现了一个IQ分类程序,运行代码,输入不同的IQ值,程序会输出对应的IQ等级。


你不需要弄懂代码的细节,直接运行你的第一个条件分支的代码吧!

拓展:一般来说,人口中的一半人属于正常和平均智力水平(得分在 90-109 之间),得分在 110 以上就属于高IQ者,即很聪明。据说,爱因斯坦的IQ是 160。









score = int(input('输入IQ值:'))if score < 80:print('智力很低')if score >= 80 and score < 110:print('普通智力')if score >= 110 and score < 140:print('智力较高')if score >= 140:

条件结构

阿甘在学校里经常受到别的孩子欺侮,他跑着躲避别人的捉弄。

进入高中后,有一天阿甘被人欺负,拼命逃跑,无意间冲入了橄榄球场,他跑步的速度被球队经理看上,依靠这项技能阿甘竟然成功升入大学。



而当初如果阿甘没有“跑”的技能,他就无法升入大学,现在我们来通过条件结构来实现这个逻辑。







skill = '跑'if skill == '跑':  print('升入大学,成为橄榄球队主力!')else:  print('无法升入大学,过着不为人知的生活')



上面这段代码的含义是:如果(if)技能(skill)为(==)跑,那么打印出升入大学,成为橄榄球队主力!。否则(else)打印出无法升入大学,过着不为人知的生活。

怎么样?是不是读起来很轻松呢?Python 对编程初学者非常友好,只要你懂一点英语,就能轻松读懂基础的 Python 代码。

值得注意的是,在上面代码中出现了一个新的操作符,即判断相等符号(==),顾名思义,就是判断操作符左边和右边的值是不是相等的。

注意:很多人总是分不清 = 和 == 的区别,你一定要记住了:= 是赋值,== 是判断相等。


条件结构也叫分支结构,我们通过流程图的形式来理解上面的代码:


可以看到,在技能(skill)是否为跑的时候产生了分支,条件成立时走左边的分支,条件不成立时走右边的分支。

有了条件结构,我们的程序就“有了思维”,可以进行判断,不再单一地从上往下执行代码,而是可以根据不同情况执行相对应的代码了。

缩进

代码行的缩进决定了代码之间的从属关系。一些代码是否要执行,要听另外一些代码的命令。

这种“上下级”似的从属关系,就要靠缩进来判断。我们再来看一下之前判断是否超速的代码:







speed = 100if speed > 60:  print('超速了')else:  print('车速正常')


第 3 行和第 5 行都缩进了,因此它们分别从属于 if speed > 60: 和 else:,相当于跟在大哥后面的小弟。当条件成立时,if speed > 60: 后面的小弟便出来干活了。当条件不成立时,则 else: 后面的小弟出来干活。

else 和 if 都是大哥,属于同级。虽然 else 在 if 语句后面,但 else 是不用缩进的。

要注意的是,没有从属关系的代码间如果乱用缩进,也会出问题导致程序报错的哦,比如说下面的代码:

i =1  b =1# 报错:IndentationError: unexpected indent# 缩进错误:有不应该出现的缩进

缩进一般使用两个空格或者四个空格,但是一定要记住在上下文中保持一致,不能一会用两个空格,一会用四个空格。


提示:我们的课程里面统一使用的是两个空格。


下面老师列出了初学者常犯的缩进错误:

skill ='跑'if skill =='跑':    print('升入大学,成为橄榄球队主力!')  print('所有人都为他惊人的跑步速度欢呼!')else:  print('无法升入大学,过着不为人知的生活')

上面第 3、4 行代码中 if 语句块里两行代码的缩进空格数不统一,导致程序报错。

skill ='跑'if skill =='跑':  print('升入大学,成为橄榄球队主力!')print('所有人都为他惊人的跑步速度欢呼!')else:    print('无法升入大学,过着不为人知的生活')

上面代码中 if 语句块下管辖着两个小弟:第三行和第四行代码,他们俩属于相同的层级,都要看 if 语句的“脸色”决定是否执行,但第四行代码却没有缩进。

skill ='跑'  if skill =='跑':  print('升入大学,成为橄榄球队主力!')  print('所有人都为他惊人的跑步速度欢呼!')else:  print('无法升入大学,过着不为人知的生活')

上面代码中第二行的 if 语句应该和第一行层级相同,并且管辖第三行和第四行,所以第二行应该取消缩进,和第一行一致。

要求严格的代码缩进是 Python 语法的一大特色。代码的缩进,标识着同一层级的若干行代码的开始和结束。

那么,我们就将上面的知识融汇贯通,来个练习吧~

编程练习

现在你已经可以读懂 if 语句的结构了,接下来你需要将 skill 变量的值改为别的任意值(比如“无”),猜猜运行结果,然后点击运行,验证结果是否符合你的预期。







skill = '跑'if skill == '跑':  print('升入大学,成为橄榄球队主力!')else:  print('无法升入大学,过着不为人知的生活')


if...else

虽然刚刚的代码你已经可以读懂大概意思,但是语法细则可能尚未清楚。接下来,我们来学习 if...else... 语句 的语法规则:

if...else… 语句由条件和两个代码块组成,可以抽象为如下结构:

if 判断条件:  代码块 1else:  代码块 2


其中判断条件成立时,则执行冒号后面的 代码块 1;反之,如果判断条件不成立则执行 else: 后面的 代码块 2

这里的判断条件一般使用比较运算符进行比较,常见的比较运算符有 ==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。

在开车的过程中,如果开了导航的话,当超速行驶时,导航会提示我们超速了,其实这里就用到了条件结构。假如某条公路限速 60,我们可以写一个判断是否超速的程序:

speed =100if speed >60:  print('超速了')else:  print('车速正常')

注意:判断条件和 else 后面的冒号,一定不能丢掉,很多初学者会忽视这里冒号的存在。而且在第一关学过字符串的引号必须是英文的,这里的冒号也不例外,必须要用英文的哦~


细心的你有没有发现执行代码块 1 和 2 前面都有两个空格?

那这两个空格是必须要有的吗,还是说可有可无呢?接下来我们通过编程练习来检验下。

编程练习

现在我们把下面的代码里两个代码块中的空格都删了,运行代码看看是否可以成功运行?

提示:如果不能成功运行,你需要加上空格,让它成功运行。







skill = '跑'if skill == '跑':  print('升入大学,成为橄榄球队主力!')else:  print('不能升入大学,过着不为人知的生活')


丢失空格会导致代码无法运行。通过刚刚的尝试,你应该体会到这两个空格的重要地位了吧?

其实这个代码行首的留白在编程里有个专业的叫法——缩进。Python 的代码块是通过缩进来定义代码块范围的。




编程练习

阿甘的球队表现出色,得到了总统先生的接见。不久之后,阿甘大学毕业,此时命运之神再次向他招手,一位军人将征兵告示递到了阿甘手上。

现在请使用条件结构,将代码中的 ??? 替换成正确的代码,在屏幕上打印出阿甘的选择。

提示:阿甘最终选择应征入伍。









choice = '应征入伍'if choice == "应征入伍":print('应征入伍去越南')print('结识了热衷捕虾的巴布和长官泰勒上尉')else:print('不知以后该干什么')


现在你已经可以自己动手实现条件分支了,作为新手的你已经很厉害了!

接下来,老师将教你一个很多编程语言都会用到的知识——注释。


注释


当我们写得代码越来越多,越来越复杂的时候,我们回过头看之前写的代码时,很难立刻就能看明白当初为什么要这么写。而有了注释,相当于给代码做了标注笔记,下次再看的时候便能快速回忆起来。

Python 中的注释很简单,只需要在注释内容前加上 # 即可。比如:

# 屏幕打印阿甘print('阿甘')

注释是给人看的,Python 会自动忽略注释的内容,不去执行。适当的注释可以提高代码可读性,但不要加一些没有必要的注释,不要为了加注释而加注释,比如:

# 给变量 name 赋值为 '阿甘'name ='阿甘'

上面的注释是没有必要的,因为会 Python 的人一眼就能看出 name = '阿甘' 的含义。注释是辅助人们来阅读代码的,如果代码本来可读性就极高,就没有为它添加注释的必要了。

所以大家日后如果要添加注释,可以先反问一下自己,“这里有必要加注释吗?”。我们来体会一下注释的正确打开方式:

# TBD:这是临时上线方案,7.30 号后删除end_date ='2019-07-30'

拓展:TBD 是 to be done 的简称。想了解更多关于代码注释的有趣知识,可以去知乎搜索“你见过哪些奇趣的代码注释”。


这段代码的背景是:我们公司的运营有个紧急需求,希望某促销活动的结束日期,在 7 月 30 号当天临时改为 2019-07-30,我们的后端徐工就临时加了行代码,把 end_date 写死到这天,但为了防止之后忘记把代码改回去,所以加了行注释。

徐工的这行注释一方面防止明天自己忘了改,另一方面是万一明天徐工写了大 bug 跑路了,后面的工程师看到这行注释也会知道这是临时代码,会及时改正并感激徐工不杀之恩。🙏🙏

Python 会自动忽略注释的内容。因此我们可以将暂时用不到但又不想删掉的代码放到注释中,这样 Python 就不会执行它们。将它们放到注释中也便于日后需要用到时快速复原。

举个例子,双十一了要做优惠活动,写了一份优惠的代码,节后要恢复原价。我们可以将原价注释,节后再将注释取消,恢复原价。






# 原价,节后恢复# price = 998# 双十一优惠价price = 499


当然,这个例子很简单,体现不了注释的作用。但如果优惠活动复杂,我们需要注释一大段代码,此时,注释便非常有用。

编程练习

阿甘所在的队伍在农田巡逻时遭到敌方袭击,中尉叫他快跑,阿甘一溜烟跑出丛林,这时他想起最好的朋友巴布没有出来。在救出好几个战友后,也救出了垂死的巴布。但不幸的是,巴布最终还是死在了越南的一条河边。

下面是阿甘关于巴布的讲述,请你根据故事情节中注释掉错误的巴布结局,运行程序。







print('巴布是我最好的朋友')print('我还知道,好朋友不是那么容易找到的')print('巴布想当一个捕虾船的船长,……')print('但他却死在越南的一条河边')#print('他最终退伍成为了一个船长')


预告

现在,你理解了变量的使用,会使用 Python 中的第一个控制结构——条件,也了解了代码中常见的缩进和注释。同时,通过代码完善阿甘的成长历程。

我们来总结一下这关的知识点:

回望这一关,是不是觉得收获满满呢?

人生本质上就是由一堆堆的选择组成,你无时无刻不在做着选择。而正因为不同的人会有不同的选择,才有了多彩多姿的人生。

阿甘,基于自己的诚实、守信、认真、勇敢、重视感情而做出的一系列选择,造就了令无数人敬佩的他!

在下一关,我同样为你准备了许多有意思的内容。我在下一关等你,明天见!👋


返回首页