Python中流程控制语句
选择结构if
循环结构for
for与range()
用while循环
增量赋值运算符
推导或内涵
1.用if语句选择执行语句
(1)if基础
if <条件1>: #一定要有冒号
<语句1>
elif <条件2>:
<语句2>
elif <条件3>:
<语句3>
..........
else:
<语句n>
示例:
(2)if语句的嵌套
if <条件>:
if <条件>:
<语句1>
elif <条件>:
<语句2>
else:
<语句3>
示例:
2.用for循环执行语句
(1)for基础
其它高级语言for语句要用循环控制变量来控制循环,Python中for语句是通过循环遍历某一序列对象(元组、列表、字典等)来构建循环,循环结束的条件就是对象被遍历完成,
for语句的形式如下:
for <循环变量> in <遍历对象>:
<语句1>
else:
<语句2>
基本for循环示例:
for i in [1,2,3,4,5]; # i 是循环变量,每次循环,i会依次取得后面列表中 一 个值
print(i,''的平方是:",i*i)
else:
print('循环结束!')
(2)for语句与break语句、continue语句
break语句是中断循环的执行,如果在for循环中执行了break语句,for语句的遍历就会立即终止,即使还有未遍历完的数据,还是会立即终止for循环语句。
continue语句的作用是提前停止循环体的执行,开始下一轮循环。在for语句中如果执行了continue语句,则continue语句后的循环体语句不会被执行,即提前结束了本次循环,进入下一个遍历体循环。
示例:
for语句遍历列表、元组、字符串的基本形式是相同的,但对字典的遍历不同。因为字典既有键又有值,在遍历时不能直接对字典进行遍历,而是通过字典的items()、keys()、values()等方法分别遍历其键和值、键、值,如果同时遍历键和值,在遍历时可以使用两个循环变量来分别接收键和值。
示例:
(3)for语句与range()函数
for语句中的对象集合可以是列表、字典以及元组等,也可以通过range()产生一个从0至x-1的整数列表,以完成计数循环。range()函数的原型如下:
range([start,] stop[, step])
其参数含义如下:
start 可选参数,起始数,默认值为0
stop 终止数,如果range只有一个参数x,那么range产生一个从0至x-1的整数列表
step 可选参数,步长,即每次循环序列增长值
示例:
输出:
for语句使用range()函数可以构建就要已知循环次数的循环程序,也可以以range()生成的数字作为索引来访问列表、元组、字符串中的值,还可以对遍历的序列实行处理,以得到相关的数据。
range()函数并不是在调用时一次生成整个序列,而是遍历一次才产生一个值,以减少内存的占用,其本质是一个迭代器。
x=(int(input('请输入开始值(整数):')),int(input('请输入一个结束值(整数):')))
x1=min(x)
x2=max(x)
for n in range(x1,x2+1):
for i in range(2,n-1):
if n%i==0:
break
else:
print(n,'是素数。')
(4)for语句与内置迭代函数
python内置了几种常用的迭代函数:
enumerate(seq) #编号迭代
sorted(seq) #排序迭代
reversed(seq) #翻转迭代
zip(seq1,seq2...) #并行迭代
编号迭代在迭代时既返回序列中的元素,又返回该元素在序列中的编号(编号从0开始)。for语句进行编号迭代时,应使用两个循环变量分别接收编号和元素的值。
交互式环境下示例:
排序迭代的作用是使得在for的遍历时,先遍历序列中较小的值,后遍历序列中较大的值,这要求序列中的数据可以是排序的同类数据。
交互式环境下的示例:
翻转迭代示例:
并行迭代在遍历时同时遍历函数中给出的seq1,seq2等序列中同一序号的元素。
交互式环境下示例:
并行迭代函数中序列值的长度不一致时,只遍历到最短的序列的长度。
3.用while循环执行语句
(1)while基础
while也是Python语言中构造循环结构程序的语句之一,主要用于构造特殊的循环。
while语句的基本形式:
while <条件>:
<语句1>
else:
<语句2>
与for循环不同的是,while语句只有在测试条件为假时才会停止。所以在while语句的循环体中一定要包含改变测试条件的语句,以保证循环能够结束,避免死循环。
示例:
结果:
(2)增量赋值运算符:
python中提供增量赋值运算符很多,基本的运算符都有对应的增量运算符:
+、-、*、/、//、**、%、&、|、^、>>、<<
基本写法:
x+=1 意义为:x=x+1
4.推导或内涵(list comprehension)
(1)推导基础
comprehension英文本意是理解或内涵(逻辑学用语),那么在Python中是指以紧凑的方式对列表、元组、字典等序列或一系列元素进行处理,处理结果仍然被放到一个列表、字典等序列当中的语法形式。
典型的列表推导基本形式如下:
[<i 相关表达式> for i in aiterator]
aiterator是一个可遍历的对象,比如列表、元组,也可以是range()函数。语义为:用循环变量i去遍历aiterator,并且将i相关表达式的值放入一个列表中。
以下两段代码都是获得1~10的平方数存入列表之中。
列表推导代码:
square=[i**i] for i in range(1,11)]
不使用列表推导,使用for:
square=[]
for i in range(1,11):
square.append(i*i)
字典推导:
(2)推导进阶
列表推导式和字典推导式不仅可以对遍历的元素进行全部处理,还可以使用if语句实现有选择地处理遍历序列中的元素。基本形式如下:
[<i 相关表达式> for i in aiterator if <条件>]
{key_exp:value_exp for key_exp,value_exp in aiterator if <条件>}
获得一个1~10中所有数的平方,且平方值为奇数的一个列表,就可以使用如下代码:
square_odd=[i**i for i in range(1,11) if i**i %2==1]