简单谈谈Python流程控制语句


Posted in Python onDecember 04, 2016

人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走;有的人好一点,可以二选一;有些能力好或者家境好的人,可以有更多的选择;还有一些人在人生的迷茫期会在原地打转,找不到方向。对于相信有上帝的人来讲,这就好像是上帝事先为我们制定好了人生路线,也好像是那些神仙为唐曾师徒的取经之路提前设置的重重磨难,上帝和神仙掌控了一切。编程语言可以模拟人类生活的方方面面,程序员就像上帝和神仙一样可以通过编程语言中特殊的关键字控制程序的执行过程,这些关键字组成的就是流程控制语句。

编程语言中的流程控制语句分为以下几类:

  1. 顺序语句
  2. 分支语句
  3. 循环语句

其中顺序语句不需要单独的关键字来控制,就是一行行的执行,不需要特殊的说明。这里主要要说的是 分支语句 和 循环语句。

一、分支语句

条件分支语句是通过一条或多条语句(判断条件)的执行结果(True/False)来决定执行哪个分支的代码块。Python中提供的分支语句为:if..else语句,没有提供switch..case语句。if..else语句有以下几种形式:

单分支:
if 判断条件:
    代码块
如果单分支语句的代码块只有一条语句,可以把if语句和代码写在同一行:

if 判断条件: 一句代码
实例:判断指定的uid是不是root用户

uid = 0

if uid == 0:
  print("root")

也可以这样写:

uid = 0

if uid == 0: print("root")

输出结果:root

双分支:

if 判断条件:
    代码块
else:
    代码块
实例:根据用户id打印用户身份

uid = 100

if uid == 0:
  print("root")
else:
  print("Common user")

输出结果:Common user

多分支:

if 判断条件1:
    代码块1
elif 判断条件2:
    代码块2
...
elif 判断条件n:
    代码块n
else:
    默认代码块

实例:根据学生分数打印字母等级

score = 88.8
level = int(score % 10)

if level >= 10:
  print('Level A+')
elif level == 9:
  print('Level A')
elif level == 8:
  print('Level B')
elif level == 7:
  print('Level C')
elif level == 6:
  print('Level D')
else:
  print('Level E')

输出结果:Level B

说明:

当上面的“判断条件”中的表达式可以是任意的表达式,也可以是任意类型的数据对象实例。只要判断条件的最终返回结果的“真”值测试为True时,就表示该条件成立,相应的代码块就会被执行;否则表示条件不成立,需要判断下一个条件。

二、循环语句

当我们需要多次执行一个代码语句或代码块时,可以使用循环语句。Python中提供的循环语句有:while循环和for循环。需要注意的是Python中没有do..while循环。此外,还有几个用于控制循环执行过程的循环控制语句:break、continue和pass。

1. while循环

基本形式
while循环语句的基本形式如下:

while 判断条件:
    代码块
当给定的判断条件的返回值的真值测试结果为True时执行循环体的代码,否则退出循环体。

实例:循环打印数字0-9

count = 0
while count <= 9:
  print(count, end=' ')
  count += 1

输出结果:0 1 2 3 4 5 6 7 8 9

while死循环

当while的判断条件一直为True时,while循环体中代码就会永远循环下去。

while True:
    print("这是一个死循环")
输出结果:

这是一个死循环
这是一个死循环
这是一个死循环
...
此时可以通过 Ctrl + C终止运行。

while..else
语句形式:

while 判断条件:
    代码块
else:
    代码块
else中的代码块会在while循环正常执行完的情况下执行,如果while循环被break中断,else中的代码块不会执行。

实例1:while循环正常执行结束的情况(else中的语句会被执行)

count = 0
while count <=9:
  print(count, end=' ')
  count += 1
else:
  print('end')

执行结果为:0 1 2 3 4 5 6 7 8 9 end

实例2:while循环被中断的情况(else中的语句不会被执行)

count = 0
while count <=9:
  print(count, end=' ')
  if count == 5:
    break
  count += 1
else:
  print('end')

输出结果:0 1 2 3 4 5

2. for循环

for循环通常用于遍历序列(如list、tuple、range、str)、集合(如 set)和映射对象(如dict)。

基本形式
for循环的基本格式:

for 临时变量 in 可迭代对象:
    代码块
实例:遍历打印一个list中的元素

names = ['Tom', 'Peter', 'Jerry', 'Jack']
for name in names:
  print(name)

对于序列,也通过索引进行迭代:

names = ['Tom', 'Peter', 'Jerry', 'Jack']
for i in range(len(names)):
  print(names[i])

执行结果:

Tom
Peter
Jerry
Jack

for...else

与while..else基本一致,不再赘述。

3. 循环控制语句

循环控制语句可以更改循环体中程序的执行过程,如中断循环、跳过本次循环。

循环控制语句 说明
break 终止整个循环
contine 跳过本次循环,执行下一次循环
pass pass语句是个空语句,只是为了保持程序结构的完整性,没有什么特殊含义。pass语句并不是只能用于循环语句中,也可以用于分支语句中。
实例1:遍历0-9范围内的所有数字,并通过循环控制语句打印出其中的奇数

for i in range(10):
  if i % 2 == 0:
    continue
  print(i, end=' ')

输出结果:1 3 5 7 9

实例2:通过循环控制语句打印一个列表中的前3个元素

names = ['Tom', 'Peter', 'Jerry', 'Jack', 'Lilly']
for i in range(len(names)):
  if i >= 3:
    break
  print(names[i])

输出结果:

Tom
Peter
Jerry

4. 循环嵌套

循环嵌套是指:在一个循环体里面嵌入另一循环。

实例1:通过while循环打印99乘法表

j = 1
while j <= 9:
  i = 1
  while i <= j:
    print('%d*%d=%d' % (i, j, i*j), end='\t')
    i += 1
  print()
  j += 1

实例2:通过for循环打印99乘法表

for j in range(1, 10):
  for i in range(1, j+1):
    print('%d*%d=%d' % (i, j, i*j), end='\t')
    i += 1
  print()
  j += 1

输出结果:

1*1=1  
1*2=2   2*2=4  
1*3=3   2*3=6   3*3=9  
1*4=4   2*4=8   3*4=12  4*4=16 
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25 
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36 
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49 
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64 
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81 

Python 相关文章推荐
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
Django视图扩展类知识点详解
Oct 25 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
django的autoreload机制实现
Jun 03 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 Python
python中正则的使用指南
Dec 04 #Python
win与linux系统中python requests 安装
Dec 04 #Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 #Python
python模块简介之有序字典(OrderedDict)
Dec 01 #Python
Python中字符串的修改及传参详解
Nov 30 #Python
简单谈谈Python中的闭包
Nov 30 #Python
浅析Python中yield关键词的作用与用法
Nov 29 #Python
You might like
PHP-MySQL教程归纳总结
2008/06/07 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
php实例分享之二维数组排序
2014/05/15 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
Python实现多属性排序的方法
2018/12/05 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
大学生就业自我鉴定
2013/10/26 职场文书
大学生大二自我鉴定
2013/10/28 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
物理力学求职信
2014/02/18 职场文书
作文评语大全
2014/04/23 职场文书
项目经理任命书范本
2014/06/05 职场文书
先进个人材料怎么写
2014/12/30 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
Spring Boot 实现 WebSocket
2022/04/30 Java/Android