python

4. 控制语句执行流程

4.1 if语句

4.1.1 if基础语法

if  <条件>:
    <语句>

条件为真时执行其后缩进的语句,否则跳过缩进语句。条件可以是任意表达式,冒号“:”不能省略。

比如:
x=5
if  x<0:
x=-x
print(x)
运行结果是5。

if  <条件>:
    <语句1>
else:
    <语句2>

条件为真时执行其后缩进的语句1,否则执行else之后缩进的语句2

if  <条件>:
    <语句1>
elif <条件2>:
    <语句2>
else:
    <语句3>

条件1为真时执行其后缩进的语句1条件2为真时执行其后缩进的语句2,条件1条件2都不成立时否则执行else之后缩进的语句3

可以以此类推增添更多的 elseif。

如果执行到某个条件x 成立了,则就执行对应的语句x,然后跳出 if 语句,其后都不会在运行和判断了。

4.1.2 if语句的嵌套

if  <条件A>:
    if  <条件1>:
            <语句1>
    elif <条件2>
             <语句2>
else:
    <语句A>

比如:

建议语句嵌套不要太深,尽量减少嵌套层次,方便阅读和理解程序,但如果逻辑清晰,则不必有意减少。

4.2 for 循环

Python语言的for语句和其他语言很不一样,其他语言(比如C语言)的for语句要用循环控制变量来控制循环,而Python中for语句是通过循环遍历某一序列对象(比如元组、列表、字典等)来构建循环,循环结束的条件就是对象被遍历完成。

4.2.1 for基础

基本语法

for <循环变量> in <遍历对象>:
         <语句1>
else:
         <语句2>

注:for语句的语义是遍历for语句中的遍历对象,每次循环,循环变量会得到遍历对象中的一个值,你可以在循环体中处理它。一般情况下,当遍历对象中的值全部用完时,就会自动退出循环。语句1就是for语句中的循环体,它的执行次数就是遍历对象中值的数量,else语句中的语句2只有在循环正常退出(正常退出是指便利万所有遍历对象中的值)时执行。

4.2.2 if语句与break语句、continue语句

berak:         中断循环的执行,即便依然有未遍历的数据,也会立即终止所有循环。
continue:    终段本次循环,之后的执行语句都不再执行,直接进入下一循环。

比如:

执行结果是:
1
1 的平方是: 1
2
3
3 的平方是: 9
4
4 的平方是: 16
(我们看到,2之后没有执行的语句结果,因为被continue跳过了,也没有5的执行结果,因为被break中断了所有循环了)

字典既有“键”又有“值”,for语句遍历字典时是通过字典的item( )、keys( )、values( )等方法分别遍历其“键和值”、“键”、“值”的。如果要同时遍历键和值,在遍历时可以使用两个循环变量来分别接收键和值。

比如:

运行后得到:
candy : 30
banana : 20
apple : 10
candy
banana
apple
30
20
10

4.2.3 for语句与range( )函数

for语句使用range( )函数可以构建可控循环次数的循环程序。

range( )可以产生数列表,函数原型是: range( [start,] stop [,step] ) 。产生的整数序列的最大值为stop-1 。它并不是在调用时一次生成整个序列,而是遍历一次才产生一个值,以减少内存的占用,其本质是一个迭代器。

  • start 可选参数,起始数,不写的话默认是0
  • stop 终止数,如果range只有一个参数x,那么range产生一个从0至x-1的整数列表
  • step 可选参数,步长

比如:

这个例子是生成10位的大小写加数字的字符串。这是书本的1.7节的2.2练习题的代码。

4.2.4 for语句与内置迭代函数

Python内置了以下几种迭代函数,方便实用。

enumerate(seq)
sorted(seq)
reversed(seq)
zip(seq1,seq2,…)

4.3 用while循环执行语句

用以构造不确定次数的循环结构。

4.3.1 语法

while <条件>:
    <语句1>
else:
    <语句2>

与for循环不同,while语句只有在测试条件为假的时候才停止,否则会无限运行甚至死机。因此必须写好跳出循环的语句。因此,一般都不用while来控制循环,避免出错。但是有时候我们在特定情况下必须用while。

也可以使用elif、break、continue语句。

4.3.2 增量赋值运算符

和C语言的意思一样,有 +=、-=等运算。除此之外,基本的运算符都有其增量赋值运算符:
+、-、*、/、//、**、%、&、|、^、>>、<< 。

用增量赋值运算符时,注意前后变量要是同一类型。

4.4 推导或内涵(list comprehension)

就是对序列中的数据进行处理得到另一组数据序列。

4.4.1 推导基础

典型语法:

[ <i 相关表达式> for i in aiterator ]

aiterator是一个可遍历的对象。

4.4.2 推导进阶

可以使用if语句进行有选择的推导。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注