《Python从小白到大牛》第8章 控制语句

程序设计中的控制语句有三种,即顺序、分支和循环语句。Python程序通过控制语句来管理程序流,完成一定的任务。程序流是由若干个语句组成的,语句可以是一条单一的语句,也可以是复合语句。Python中的控制语句有以下几类:

  • 分支语句:if
  • 循环语句:while和for
  • 跳转语句:break、continue和return

分支语句

分支语句提供了一种控制机制,使得程序具有了“判断能力”,能够像人类的大脑一样分析问题。分支语句又称条件语句,条件语句使部分程序可根据某些表达式的值被有选择地执行。

Python中的分支语句只有if语句。if语句有三种结构:if结构、if-else结构和elif结构三种。

if结构

如果条件计算为True就执行语句组,否则就执行if结构后面的语句。语法结构如下:

if 条件 :
  语句组

if结构示例代码如下:

# coding=utf-8
# 代码文件:chapter8/8.1.1/hello.py

import sys

score = int(sys.argv[1]) # 获得命令行传入的参数 ①

if score >= 85:
    print("您真优秀!")

if score < 60:
    print("您需要加倍努力!")

if (score >= 60) and (score < 85):
    print("您的成绩还可以,仍需继续努力!")

为了灵活输入分数(score)本例中使用了sys.argv,sys.argv能够返回命令行参数列表,见代码第①行。sys.argv[1]返回参数列表的第二个元素,因为第一个元素(sys.argv[0])是执行的Python文件名。由于参数列表中元素的字符串,所以还需要使用int函数将字符串转换为int类型。另外,为了使用sys.argv命令行参数列表,还需要在文件开始通过import
sys语句导入sys模块。

执行时需要打开Windows命令行提示符,输入如下指令,如图8-1所示。

python ch8.1.1.py 80

如果在程序需要获取sys.argv[0]元素返回值是ch8.1.1.py。

注意 使用sys.argv获取命令行参数列表的程序代码,不能在Python
Shell环境下运行获得参数列表。

if-else结构

几乎所有的计算机语言都有这个结构,而且结构的格式基本相同,语句如下:

if 条件 :
   语句组1
else :
   语句组2 

当程序执行到if语句时,先判断条件,如果值为True,则执行语句组1,然后跳过else语句及语句组2,继续执行后面的语句。如果条件为False,则忽略语句组1而直接执行语句组2,然后继续执行后面的语句。

if-else结构示例代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.1.2.py

import sys

score = int(sys.argv[1])  # 获得命令行传入的参数

if score >= 60:
    print("及格")
    if score >= 90:
        print("优秀")
else:
print("不及格")

示例执行过程参考8.1.1节,这里不再赘述。

elif结构

elif结构如下:

if 条件1 :
    语句组1
elif 条件2 :
    语句组2
elif 条件3 :
    语句组3
...
elif 条件n :
    语句组n
else :
    语句组n+1

可以看出,elif结构实际上是if-else结构的多层嵌套,它明显的特点就是在多个分支中只执行一个语句组,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。

elif结构示例代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.1.3.py

import sys

score = int(sys.argv[1])  # 获得命令行传入的参数

if score >= 90:
    grade = ‘A‘
elif score >= 80:
    grade = ‘B‘
elif score >= 70:
    grade = ‘C‘
elif score >= 60:
    grade = ‘D‘
else:
    grade = ‘F‘

print("Grade = " + grade)

示例执行过程参考8.1.1节,这里不再赘述。

三元运算符替代品——条件表达式

在前面学习运算符时,并没有提到类似Java语言的三元运算符[^1]。为提供类似的功能Python提供了条件表达式,条件表达式语法如下:
[^1]: 三元运算符的语法形式:条件 ? 表达式1 :
表达式2,当条件为真时,表达式1返回,否则表达式2返回。

>   表达式1 if 条件 else 表达式2

其中,当条件计算为True时,返回表达式1,否则返回表达式2。

条件表达式例代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.1.4.py

import sys

score = int(sys.argv[1])  # 获得命令行传入的参数

result = ‘及格‘ if score >= 60 else ‘不及格‘
print(result)

示例执行过程参考8.1.1节,这里不再赘述。

从示例可见,条件表达式事实上就是if-else结构,而普通的if-else结构不是表达式,不会有返回值,而条件表达式比较进行条件判断,而且还会有返回值。

循环语句

循环语句能够使程序代码重复执行。Python支持两种循环构造类型:while和for。

while语句

while语句是一种先判断的循环结构,格式如下:

while 循环条件 :
    语句组
[else:
    语句组]

while循环没有初始化语句,循环次数是不可知的,只要循环条件满足,循环就会一直执行循环体。while循环中可以带有else语句,else语句将在8.3节详细介绍。

下面看一个简单的示例,代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.2.1.py

i = 0

while i * i < 100_000:
    i += 1

print("i = {0}".format(i))
print("i * i = {0}".format(i * i))

输出结果如下:

i = 317
i * i = 100489

上述程序代码的目的是找到平方数小于100_000的最大整数。使用while循环需要注意几点,while循环条件语句中只能写一个表达式,而且是一个布尔型表达式,那么如果循环体中需要循环变量,就必须在while语句之前对循环变量进行初始化。本例中先给i赋值为0,然后在循环体内部必须通过语句更改循环变量的值,否则将会发生死循环。

提示
为了阅读方便,整数和浮点数均可添加多个0或下划线以提高可读性,如000.01563和_360_000,两种格式均不会影响实际值。下划线一般是每三位加一个。

for语句

for语句是应用最广泛、功能最强的一种循环语句。Python语言中没有C语言风格的for语句,它的for语句相等于Java中增强for循环语句,只用于对序列,序列包括字符串、列表和元组进行遍历。

for语句一般格式如下:

for 迭代变量 in 序列 :
  语句组
[else:
    语句组]

“序列”表示所有的实现序列的类型都可以使用for循环。“迭代变量”是从序列中迭代取出的元素,然后执行循环体。for循环中也可以带有else语句,else语句将在8.3节详细介绍。

示例代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.2.2.py

print("----范围-------")
for num in range(1, 10):  # 使用范围    ①
    print("{0} x {0} = {1}".format(num, num * num))

print("----字符串-------")
#  for语句
for item in ‘Hello‘:    ②
    print(item)

# 声明整数列表
numbers = [43, 32, 53, 54, 75, 7, 10]   ③

print("----整数列表-------")

#  for语句
for item in numbers:    ④
    print("Count is : {0}".format(item))

输出结果:

----范围-------
1 x 1 = 1
2 x 2 = 4
3 x 3 = 9
4 x 4 = 16
5 x 5 = 25
6 x 6 = 36
7 x 7 = 49
8 x 8 = 64
9 x 9 = 81
----字符串-------
H
e
l
l
o
----整数列表-------
Count is : 43
Count is : 32
Count is : 53
Count is : 54
Count is : 75
Count is : 7
Count is : 10

上述代码第①行range(1, 10)函数是创建范围(range)对象,它的取值是1 ≤ range(1, 10)
\< 10,步长为1,总共10整数。范围也一种整数序列,关于范围会在8.4节详细介绍。

代码第②行是循环字符串Hello,字符串也是一个序列,所以可以用for循环变量。

代码第③行是定义整数列表,关于列表会在后面第9章详细介绍。代码第④行是遍历列表numbers。

跳转语句

跳转语句能够改变程序的执行顺序,可以实现程序的跳转。Python有3种跳转语句:break、continue和return。本节重点介绍break和continue语句的使用。return将后面章节介绍。

break语句

break语句可用于上一节介绍的while和for循环结构,它的作用是强行退出循环体,不再执行循环体中剩余的语句。

下面看一个示例,代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.3.1.py

for item in range(10):
    if item == 3:
        # 跳出循环
        break
    print("Count is : {0}".format(item))

在上述程序代码中,当条件item
==3的时候执行break语句,break语句会终止循环。range(10)函数省略了开始参数,默认是从0开始的。程序运行的结果如下:

Count is : 0
Count is : 1
Count is : 2

continue语句

continue语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。

下面看一个示例,代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.3.2.py

for item in range(10):
    if item == 3:
        continue
    print("Count is : {0}".format(item))

在上述程序代码中,当条件item
==3的时候执行continue语句,continue语句会终止本次循环,循环体中continue之后的语句将不再执行,接着进行下次循环,所以输出结果中没有3。程序运行结果如下:

Count is: 0
Count is: 1
Count is: 2
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9

while和for中的else语句

在前面8.2节介绍while和for循环时,还提到他们都可以跟有else语句,它与if语句中的else不同。这里的else是在循环体正常结束时才运行的代码,当循环被中断时不执行,break、return和异常抛出都会中断循环。循环中的else语句流程图如图8-2所示。

示例代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.3.3.py

i = 0

while i * i < 10:
    i += 1
    # if i == 3:
    #     break
    print("{0} * {0} = {1}".format(i, i * i))
else:
    print(‘While Over!‘)

print(‘-------------‘)

for item in range(10):
    if item == 3:
        break
    print("Count is : {0}".format(item))
else:
    print(‘For Over!‘)

运行结果如下:

1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16
While Over!
-------------
Count is : 0
Count is : 1
Count is : 2

上述代码中在while循环中break语句被注释了,因此会进入else语句,所以最后输出While
Over!。而在for循环中当条件满足时break语句执行,程序不会进入else语句,最后没有输出For
Over!。

使用范围

在前面的学习过程中多次需要使用范围,范围在Python中类型是range,表示一个整数序列,创建范围对象使用range()函数,range()函数语法如下:

range([start,] stop[, step])

三个参数全部是整数类型,其中start是开始值,可以省略,表示从0开始;stop是结束值;step是步长。注意start
≤ 整数序列取值 \< stop,步长step可以为负数,可以创建递减序列。

示例代码如下:

# coding=utf-8
# 代码文件:chapter8/ch8.3.4.py

for item in range(1, 10, 2):        ①
    print("Count is : {0}".format(item))

print(‘--------------‘)

for item in range(1, -10, -3):  ②
    print("Count is : {0}".format(item))

输出结果如下:

Count is : 1
Count is : 3
Count is : 5
Count is : 7
Count is : 9
--------------
Count is : 0
Count is : -3
Count is : -6
Count is : -9

上述代码第①行是创建一个范围,步长是2,包含的元素见输出结果,有5个元素。代码第②行是创建一个递减范围,步长是-3,包含的元素见输出结果,有4个元素,包含的元素见输出结果。

本章小结

通过对本章内容的学习,读者可以了解到Python语言的控制语句,其中包括分支语句if、循环语句(while和for)和跳转语句(break和continue)等。最后还介绍了范围。

配套视频

http://edu.51cto.com/topic/1507.html

配套源代码

http://www.zhijieketang.com/group/8

电子书

https://yuedu.baidu.com/ebook/5823871e59fafab069dc5022aaea998fcc2240fc

作者微博:@tony_关东升br/>邮箱:[email protected]
智捷课堂微信公共号:zhijieketang
Python读者服务QQ群:628808216

《Python从小白到大牛》第8章 控制语句

原文地址:http://blog.51cto.com/tonyguan/2151990

时间: 2024-11-05 23:28:59

《Python从小白到大牛》第8章 控制语句的相关文章

《Python从小白到大牛》第1章 开篇综述

Python诞生到现在已经有20多年了,但是Python仍然是非常热门的编程语言之一,很多平台中使用Python开发.表1-1所示的是TIOBE社区发布的2017年3月和2018年3月的编程语言排行榜,可见Python语言的热度,或许这也是很多人选择学习Python的主要原因. Python语言历史 Python之父荷兰人吉多 范·罗苏姆(Guido vanRossum)在1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无聊时间,决心开发一门解释程序语言.1991年第一个Python解释器公

《Python从小白到大牛》第5章 Python编码规范

俗话说:"没有规矩不成方圆".编程工作往往都是一个团队协同进行,因而一致的编码规范非常有必要,这样写成的代码便于团队中的其他人员阅读,也便于编写者自己以后阅读. 提示关于本书的Python编码规范借鉴了Python官方的PEP8编码规范^1和谷歌Python编码规范^2. 命名规范 程序代码中到处都是标识符,因此取一个一致并且符合规范的名字非常重要.Python中命名规范采用多种不同.不同的代码元素命名不同,下面分类说明一下. 包名.全部小写字母,中间可以由点分隔开,不推荐使用下划线.

《Python从小白到大牛》第6章 数据类型

在声明变量时会用到数据类型,在前面已经用到一些数据类型,例如整数和字符串等.在Python中所有的数据类型都是类,每一个变量都是类的"实例".没有基本数据类型的概念,所以整数.浮点和字符串也都是类. Python有6种标准数据类型:数字.字符串.列表.元组.集合和字典,列表.元组.集合和字典可以保存多项数据,他们每一个都是一种数据结构,本书中把他们统称为"数据结构"类型. 本章先介绍数字和字符串,列表.元组.集合和字典数据类型后面章节会详细介绍. 数字类型 Pyth

《Python从小白到大牛》第9章 数据结构

当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机程序中会有很多数据,这些数据也需要一个容器将他们管理起来,这就是数据结构.常见的数据结构:数组(Array).集合(Set).列表(List).队列(Queue).链表(Linkedlist).树(Tree).堆(Heap).栈(Stack)和字典(Dictionary)等结构. Python中数据容器主要有:序列.集合和字典. 注意Python中并没有数组结构,因为

买《Python从小白到大牛》专题视频课程送配套纸质图书

经过一年多时间的呕心沥血,Python立体化图书--<Python从小白到大牛>即将与大家见面了.所谓立体化图书包括:电子图书.视频.课件和服务等内容. <Python从小白到大牛>纸质图书将于9月下旬上市,为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院<Python从小白到大牛全集专题>视频课程http://edu.51cto.com/topic/1507.html的学员送一本<Python从小白到大牛>纸质版图书.请于购买课程后10个工

《Python从小白到大牛》简介

本书是一部系统论述Python编程语言.OOP编程思想以及函数式编程思想的立体化教程(含纸质图书.电子书.教学课件.源代码与视频教程).为便于读者高效学习,快速掌握Python编程方法.本书作者精心制作了电子书.完整的教学课件.完整的源代码与丰富的配套视频教程以及在线答疑服务等内容. 本篇包括8章内容,系统介绍了Python语言的基础知识.内容包括Python语言历史,Python语言的特点,开发环境的搭建,创建第一个Python程序,Python语法基础,Python编码规范,数据类型,运算符

《Java从小白到大牛精简版》——第1章 开篇综述

Java诞生到现在已经有20多年了,但是Java仍然是非常热门的编程语言之一,很多平台中使用Java开发.表1-1所示的是TIOBE社区发布的2016年5月和2017年5月的编程语言排行榜,可见Java语言的热度,或许这也是很多人选择学习Java的主要原因. 表 1-1 TIOBE编程语言排行榜 2017年5月 2016年5月 变化 编程语言 评级 评级变化 1 1 Java 14.639% -6.320% 2 2 C 7.002% -6.220% 3 3 C++ 4.751% -1.950%

《Java从小白到大牛》之第7章 控制语句

<Java从小白到大牛>纸质版已经上架了!!! 程序设计中的控制语句有三种,即顺序.分支和循环语句.Java程序通过控制语句来管理程序流,完成一定的任务.程序流是由若干个语句组成的,语句可以是一条单一的语句,也可以是一个用大括号({})括起来的复合语句.Java中的控制语句有以下几类: 分支语句:if和switch. 循环语句:while.do-while和for 跳转语句:break.continue.return和throw 7.1 分支语句 分支语句提供了一种控制机制,使得程序具有了&q

《Java从小白到大牛》之第10章 面向对象基础(下)

<Java从小白到大牛>纸质版已经上架了!!! 封装性与访问控制 Java面向对象的封装性是通过对成员变量和方法进行访问控制实现的,访问控制分为4个等级:私有.默认.保护和公有,具体规则如表10-1所示. 表 101 Java类成员的访问控制 可否直接访问控制等级 同一个类 同一个包 不同包的子类 不同包非子类 私有 Yes 默认 Yes Yes 保护 Yes Yes Yes 公有 Yes Yes Yes Yes 下面详细解释一下这4种访问级别. 私有级别 {#-0} 私有级别的关键字是pri