15分钟教你快速掌握Python编程项目流程,编程就是这么任性!

python作为一门高级编程语言,它的定位是优雅、明确和简单。阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于解决问题而不是去搞明白语言本身。Python虽然是基于C语言编写,但是摒弃了C中复杂的指针,使其变得简明易学。并且作为开源软件,Python允许对代码进行阅读,拷贝甚至改进。这些性能成就了Python的高效率,有“人生苦短,我用Python”之说,是一种十分精彩又强大的语言。

流程控制《英雄无敌》

编程序的目的通常是解决问题,现在我们已经可以让计算机按顺序执行(从上至下依次执行)指令了。但实际处理问题时有些需要进行选择性的执行,有些程序还需要反复执行多次。简单说我们前面写的程序如果都是流水账的话,接下来我们掌握流程控制就可以随意控制程序的走向写出任何程序了。

还记得你的《英雄无敌》吗?没有流程控制的《英雄无敌》应该最多就只是个按顺序执行的故事吧?有了流程控制,你的游戏就可以更丰富灵活了,比如你可以让玩家选择行进的方向,也可以让游戏一直运行到“Game Over”或者用户决定退出时才结束。这里还是要推荐下小编的Python学习裙:‘’五八八,零九零,九四二‘’不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。

比如下面这样的运行过程:

4.1分支结构:if语句

分支结构的语法其实并不复杂,但是经过精确的设计和组合,可以解决很多看似复杂的问题,比如人工智能领域的决策树算法就是许多的分支结构构成的,你可以让计算机用决策树算法分辨出一个物体是椅子还是狗。

if语句是最基本的条件测试语句,通过条件表达式的结果选择执行指定的语句。判断对错是计算机最擅长的事,因为理论上计算机只认识0和1,而做为选择的判断依据就可以用0(假)和1(真)来表示。比如你的英雄在地图上是否移动就是二选一,当然你可能需要上下左右的移动这种复杂的选择,那就是多个选择,那就只需要通过将简单的选择进行组合就可以了。

if语句执行流程如下图所示:

图 if流程图

这个过程的意思就是,当主程序执行到if语句时就好像到了一个分岔路口,即表示要根据一个条件表达式的结果作出判断,如果这个表达式的返回值是True则选择其中一条分支,相反,如果是False则选择另一条,可以设置多个elif来增加条件,当通过判断后的语句块执行完毕后则回到主程序的其他语句继续执行。

4.1.1 if语法结构

if的语法形式比较灵活,可以根据实际问题灵活运用,主要是有四种形式。

1.条件执行

最简单的条件执行,语法结构为:

if 条件表达式:

语句体

if根据之后的条件表达式返回的布尔值来决定是否执行之后的语句体,布尔值为真则执行语句体,为假则什么都不做。为区别语句体与主程序,if之后的语句体需要缩进4个空格。这种类型的语句成为复合语句。在Python中需要缩进的地方没人都是用四个空格,当然,你也可以使用Tab,但是最好是设置tab的缩进量为四个空格,而且,千万不要空格和Tab混合使用,会造成很多麻烦。

语句体中的代码数量没有要求,有多行语句时需要保持一致的缩进量,但最少要有一行。如果在设计代码遇到一个语句体什么都不做(通常是标记一个我们还没来得及写功能代码的时候)。这时我们用pass语句,pass语句的作用就是什么都不做,我们称之为代码桩,只起到占位的作用。

2.选择执行

第二种形式是选择执行,这种情况就会产生分支效果,仍然是由条件表达式返回的布尔值来决定被执行的语句体,语法结构为:

if 条件表达式:

语句体

else:

语句体

这里多了一个else,当if的条件表达式为False的时候就会执行else的语句体。比如我们用程序来处理一个申请,申请人需要输入自己的年龄,满18岁才可以通过。代码就像这样:

条件表达式20>=18返回值为True,所以屏幕上会打印Enter。

3.条件链

还有的时候,需要判断的条件不止一个这是我们需要更多分支。这时的语法形式叫条件链或者多分支:

if 条件表达式:

语句体

elif 条件表达式:

语句体

else:

语句体

比如我们要做计算器,就需要判断用户输入的运算符;

多了的elif其实就是“else if”,意思是否则再如果,使用的数量没有限制。所有的条件顺序执行,哪个条件为真则执行哪个语句体,如果所有条件都为真则只执行第一个。如果有else语句,只能放在最后。

4.嵌套

条件判断语句体内可以再嵌套条件语句,实际后面我们再学其他语法,我们都可以灵活嵌套,目的是解决问题。

比如我们做一个三分法,判断两个数字x和y的大小:

这个程序中的第一个if产生两个分支,其中的第二个分支中又产生一个分支,区别的方式就是嵌套在内部的if相对于第一层整体进行了缩进。嵌套语句层数不宜超过3层,嵌套层数太多会让代码阅读起来非常困难。应该尽量避免。我们在逻辑运算符中会举些例子。

4.1.2布尔值与if

我们通过上面的小例子可以看到分支流程二选一的过程,而其中的关键因素就是给定的条件表达式,想让程序乖乖听话,这个表达式要准确地反映出你做判断的依据。

在条件表达式中需要理解的就是返回的布尔值,布尔值只有两个值,真和假。但得一提的是,虽然只有真和假,但表现形式可不仅仅是True和False或者1和0。

布尔表达式,会被解释器看作False的值:

1、None;

2、False;

3、任何为0的数字类型,如:0,0.0,0j;

4、任何空序列,如:'',(),[];

5、任何空字典,例如:{};

6、用户定义的类实例,如果类定义了__bool__()或者__len__()方法,并且该方法返回0或者布尔值False。

其它所有值被解释器看作True。

可以用bool来转换其它值为布尔值看一下效果,实际编程时不需要:

4.1.3逻辑运算符与if

有了布尔值,我们可以完成大多数的判断,但是碰到这样的问题呢?比如报考C1C2驾驶证的条件是满18岁小于70岁,这里有两个条件要同时满足才可以,这种情况我们有两种选择,一种是if语句嵌套实现,但是嵌套对于程序阅读来说不是很友好。另一种就是利用逻辑运算符,第二张中我们简单介绍了一下,逻辑运算符一共有三个:and、or和not。

1. 逻辑与

逻辑与的运算符and起到的作用是,只有左右皆为真时结果为真:

前面提到报考驾驶证验证的例子就可以写成这样:

2. 逻辑或

逻辑或的作用是,or左右有一个为真,则结果为真,跟逻辑与的区别就在:

比如我想判断一个是否是3或者5的倍数,符合条件的如3、5、6、9、15条件语句如下:

3. 逻辑非

逻辑非的作用就是给布尔值作否定:

比如判断一个字符串不为空:

最后需要说明一点,and 和 or 运算有一条重要法则:短路计算。

1. 在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

如果你选择了自学,我想给你提几点建议:

1.找浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。

2.去找实际项目练手。最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目。

3.最好能找到一个已经会python的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。

4.另外,除了学习编程语言,也兼顾补一点计算机基础,和英语。

5.不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别人的代码

6.学会查文档,用好搜索引擎和开发者社区。

就是以上这些,希望你能有所收获。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322A0XVL100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券