控制流程

5 控制流程

5.1 简介

到目前为止我们所见到的程序,总是有一系列的语句,Python会很忠实地按照它们的顺序执行。如果你想要改变语句的执行顺序,该怎么办呢?比如:根据时间打印“早上好”或者“晚上好”。聪明的你可能已经猜到了。对,通过控制流程语句来实现。在Python 中常用的控制流语句有: if、for 和while

5.2 If语句

a) If语句简介

让我们先从一个轻松的话题开始认识if吧。话说有一位焦急的母亲在为自己的女儿物色男朋友,于是她们之间就有了下面的对话:

女儿:多大年纪了?

母亲:26。

女儿:长的帅不帅?

母亲:挺帅的。

女儿:收入高不?

母亲:不算很高,中等情况。

女儿:是公务员不?

母亲:是,在税务局上班呢。

女儿:那好,我去见见。

我们看张图吧,这样会更直观:

机智的你会发现这个女孩在不停的做条件判断,直至满足自己的条件才见。所以if语句翻译过来就是如果的意思,也就是判断是否满足某个条件,而else呢则是上个if的反面。比如这里判断年龄是否大于30,那么else自然是小于等于30了。如果再判断则使用elif用一个新的条件再判断。

a)  仅含If语句

>>> salary=10001

>>> if(salary>10000):

...     print("老板")

结果:老板

b)  If else语句

>>>salary=9999

>>>if(salary>10000):

...     print("老板")

... else:

...     print("屌丝")

...

结果:屌丝

c)  多层If语句

>>>if stafflevel == 3:# 判断num的值

...     print ('老板')

... elifstafflevel == 2:

...     print ('经理')

... elifstafflevel == 1:

...     print ('员工')

... elifstafflevel < 0:# 值小于零时输出

...     print ('员工等级不能小于0')

... else:

...     print ('输入条件异常,请检查你的输入')# 条件均不成立时输出

...

结果:老板

5.3 while语句

while翻译过来是当。

“当山峰没有棱角的时候

当河水不再流

当时间停住日夜不分

当天地万物化为虚有

我还是不能和你分手

不能和你分手”

a) 普通while语句

while语句类似if,即可当满足某个条件时执行,不满足时跳出循环。见如下示例:

>>> stafflevel=3

>>> while(stafflevel <6):

...     stafflevel+=1

...     print("员工等级:"+str(stafflevel))

...

结果:

员工等级:4

员工等级:5

员工等级:6

b) 结合else的while语句

>>> stafflevel=3

>>> while(stafflevel <6):

...     stafflevel+=1

...     print("员工等级:"+str(stafflevel))

... else:

...     print("while循环结束")

...

结果:

员工等级:4

员工等级:5

员工等级:6

while循环结束

5.4 for语句

这里我们举个例子,假设周一到周五是个时间序列,那么每天我们都要周而复始的去上班,只有到周末时才休息。这就是个For循环的例子,流程见下图示意:

>>> for num in range(1,6):

...     print("星期"+str(num)+"上班")

...

结果:

星期1上班

星期2上班

星期3上班

星期4上班

星期5上班

for循环另一例

如果你想遍历一个字典里的元素可以这么写:

>>> fruits = ['banana','apple',  'mango']

>>> for fruit in fruits:

...      print ('当前水果 :', fruit)

...

结果:

当前水果 : banana

当前水果 : apple

当前水果 : mango

5.5 break语句

Break语句是用来终止循环的,可以使用在for循环或者while循环里。

下面我给个一对情侣因为说谎分手的例子,话说一个女生很在意自己男朋友是否说话,但是不能接受一而再再而三的撒谎,所以当她男朋友说了第5次说谎时,她终于提出了分手。如下就是代码示例:

>>> for num inrange(1,8):

...     print("第"+str(num)+"次撒谎")

...     if (num==5):

...             print("已经第5次说谎了,对不起我们分手吧!")

...             break

...

第1次撒谎

第2次撒谎

第3次撒谎

第4次撒谎

第5次撒谎

已经第5次说谎了,对不起我们分手吧!

注:本来这位女生的男朋友还准备撒谎7次了,现在看来第5次就GameOver了。

5.6continue语句

我们还来举个女生选男朋友的例子吧,这次通过工资来判断,发现月工资小于10000的直接放弃掉,只要高于这个数的。程序见下:

>>> for num inrange(9000,13000,1000):

...     print("当前工资:"+str(num))

...     if(num<=10000):

...             print("工资太低了,"+str(num)+"不想见")

...             continue

...             print("执行不到的代码段!")

...     print("这个男的工资"+str(num)+"差不多,我们见见吧!")

...

结果:

当前工资:9000

工资太低了,9000不想见

当前工资:10000

工资太低了,10000不想见

当前工资:11000

这个男的工资11000差不多,我们见见吧!

当前工资:12000

这个男的工资12000差不多,我们见见吧!

注:

1)   黄色高亮处不会被执行到,这是因为当num不断增加到11000时并不满足num<=10000的条件,此时会跳转到外层的for循环,但不会执行跟continue一级的后面的语句。

2)   初学者往往会搞不清楚break和continue的区别,其实很简单,break是结束整个外层循环,而continue在结束了自己条件后外层的循环还会继续执行。当然两者也有共同点就是跟他们一级的语句将永远不会被执行到。

注意看上面例子你会发现for循环从9000一直到12000,当然这里的步长是1000。也就是说没中断。但是如果我改成break程序,你会发现满足break里的条件时,for循环会立刻终止,也就是到10000时就停了。

>>> for num inrange(9000,13000,1000):

...     print("当前工资:"+str(num))

...     if(num>=10000):

...             print("工资太高了,"+str(num)+"不想见")

...             break

...             print("执行不到的代码段!")

...     print("这个男的工资"+str(num)+"比较低,我们见见吧!")

...

5.7 总结

通过本章的学习我们已经掌握了如何使用三种控制流程的语句: if 、while 和for 以及控制循环的break 和continue 语句。它们是Python 代码段中最常用的部分。接下来,我们将学习如何创建和使用函数。

Python基础概念_4_控制流程相关推荐

  1. java 基本语法与流程控制_Java基础语法之控制流程

    Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}&qu ...

  2. Python基础概念_14_常见术语

    常见术语 15 常见术语 15.1 简介 Python里有一些常见的专业名词.用语,我们一般统称为术语.为了更方便的学习python我们通过表格的方式列举了常用的术语和单词以及工具. 15.2 常见术 ...

  3. Python基础概念_2_基础概念

    基础概念 3 基础概念 3.1 数字 计算机最初设计时就是为了做数据运算的,所以针对这个概念应该不会陌生.在Python的世界里数主要有三种类型: 整数.浮点数和复数,详见下例: a) 5 是一个整数 ...

  4. Git基础概念与Flow流程介绍

    文章目录 Git相关 基本概念 常见客户端 TortoiseGit Sourcetree Intellij Idea 命令行 常用命令 存储区域 命令之 add & commit &p ...

  5. (2)RabbitMQ基础概念及工作流程详解

    上一节中我们对MQ做了一个概要介绍,这一节开始我们选取RabbitMQ开始进行学习,本节将会RabbitMQ做个简单介绍,并且会对其常见的基础概念做个讲解,最后会简单介绍一下RabbitMQ的工作流程 ...

  6. 原python基础概念整理_Python从头学之基础概念整理

    学程序真的是一个无法间断的过程,只要你懈怠,种种原因都是你的理由.然而造成的后果就是到目前位置,一个心目中的项目都没有完美的做出来: 归根结底,其实就是基础没有打好,因为每一个复杂的功能都是由很多简单 ...

  7. python基础知识05-控制流程

    控制流程 1.条件判断 python中的代码从上到下执行. if 条件: 缩进 语句1 elif 条件2: 缩进 语句2 (-或者写pass关键字.不写任何代码的时候,防止报错.) ... else: ...

  8. Python基础概念_8_字符串处理

    字符串处理 9 字符串处理 9.1 简介 在前面的章节里我们介绍了常用的数据类型,其中字符串并没有单独拎出来讲,那么接下来我们将重点讲下它.字符串一般是通过引号('或")包裹起来的,因为它有 ...

  9. python核心理念_《三天搞定Python基础概念之第一天》中文版

    前言: 首先,非常感谢Jiang老师将其分享出来!本课件非常经典! 经过笔者亲测,竟然确实只要三天,便可管中窥豹洞见Python及主要库的应用.实属难得诚意之作! 其次,只是鉴于Jiang老师提供的原 ...

最新文章

  1. Delphi中使用IXMLHTTPRequest如何用POST方式提交带参
  2. 主键需要键索引吗_MySQL 索引的知识点都在这里了,建议收藏!
  3. LVS的简单示例(一)
  4. python评分卡建模-卡方分箱(2)之代码实现
  5. exit()与_exit()函数的区别
  6. js学习总结----弹性势能动画之抛物线运动
  7. Codeforces Round #757 (Div. 2)
  8. js深度复制一个对象使用JSON.stringify是最好的办法吗
  9. vscode终端乱码
  10. mysql集群负载均衡,这些知识你必须拿下
  11. C++11中shared_ptr智能指针用法
  12. ArcGIS教程:MapGIS向ArcGIS数据格式转换方法
  13. MATLAB数值计算
  14. Flutter AspectRatio 宽高比设定
  15. 人工智能相关书籍介绍
  16. 10天内我国痛失20位两院院士!原中科院副院长王佛松逝世,享年89岁
  17. R作图配色---颜色提取及色彩搭配
  18. 巨控GRM110无线通信模块
  19. 51单片机外部中断的使用以及优先级设置
  20. 第六天----数据结构笔记

热门文章

  1. VTK:vtkAnimationScene用法实战
  2. opengl加载显示3D模型3d类型文件
  3. JavaScript实现hamiltonianCycle哈密尔顿图算法(附完整源码)
  4. OpenCASCADE绘制测试线束:简单的向量代数和测量之测量命令
  5. OpenCASCADE:使用扩展数据交换 XDE之自定义注释note
  6. wxWidgets:测试样品
  7. wxWidgets:编写非英语应用程序
  8. boost::sort模块float_sort 右移函子排序示例
  9. boost::mp11::mp_none_of_q相关用法的测试程序
  10. boost::rational用法的测试程序