《Python从小白到大牛》已经上市!
程序设计中的控制语句有三种,即顺序、分支和循环语句。Python程序经过控制语句来管理程序流,完成必定的任务。程序流是由若干个语句组成的,语句能够是一条单一的语句,也能够是复合语句。Python中的控制语句有如下几类:html
分支语句:ifpython
循环语句:while和for微信
分支语句提供了一种控制机制,使得程序具备了“判断能力”,可以像人类的大脑同样分析问题。分支语句又称条件语句,条件语句使部分程序可根据某些表达式的值被有选择地执行。ide
Python中的分支语句只有if语句。if语句有三种结构:if结构、if-else结构和elif结构三种。函数
若是条件计算为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所示。code
python ch8.1.1.py 80
若是在程序须要获取sys.argv[0]元素返回值是ch8.1.1.py。orm
注意 使用sys.argv获取命令行参数列表的程序代码,不能在Python
Shell环境下运行得到参数列表。
几乎全部的计算机语言都有这个结构,并且结构的格式基本相同,语句以下:
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结构以下:
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 循环条件 : 语句组 [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语句是应用最普遍、功能最强的一种循环语句。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语句可用于上一节介绍的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语句用来结束本次循环,跳过循环体中还没有执行的语句,接着进行终止条件的判断,以决定是否继续循环。
下面看一个示例,代码以下:
# 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
在前面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://www.zhijieketang.com/group/8
https://yuedu.baidu.com/ebook/5823871e59fafab069dc5022aaea998fcc2240fc
做者微博:@tony_关东升br/>邮箱:eorient@sina.com智捷课堂微信公共号:zhijieketangPython读者服务QQ群:628808216