4、控制语句执行流程
顺序执行 选择执行 循环执行
4.1 用if选择执行语句
4.1.1 if基础
In [1]:
x = 3 if x<0: #if后必须有‘:’ x=-x print(x)
3
In [6]:
x = 3 if x<0: x=-x elif x==3: #有多个分支时,只要有一个条件成立,就会将其执行并推出整个if语句 x=x-3 else: x=x+x print(x)
0
In [8]:
a = None b = 3 x = b if a is not None else 0 #当a不为None,x取3,否则x取0 print(x)
0
4.1.2 if语句的嵌套
In [13]:
a = int(input('输入一个整数:')) #嵌套一般不要太深,对于多件套的语句可以适当修改,减少嵌套层次 if a > 0: if a>10000: print('大于1万') else: print('小于1万') else: if a < -10000: print("小于'-10000'") else: print("大于'-10000'") print('且小于0')
输入一个整数:1000 小于1万
4.2 用for循环执行语句
与其他高级语言不同,python的for是通过循环遍历某一序列对象来构建循环,循环结束的条件就是对象遍历完成。
In [18]:
alist = [1,2,3,4,5] for i in alist: print(i) else: print('end') #循环结束时,else后的语句就会执行
1 2 3 4 5 end
4.2.2 for语句与break语句、continue语句
break作用是中断循环,如在循环中执行了break,遍历就会立即终止。 continue作用是提前停止循环体的执行,开始下一轮循环。白话就是跳过当前进入下一个循环。 [a,b,c] 如continue在b这里,则结果为ac
In [27]:
for i in [1,2,3,4,5]: print(i) if i == 2: #注意缩进,看执行结果,当i==2时,跳过了 continue print('测试contiune数据%d' %i) if i == 4: #注意缩进,当i==4时,跳出了循环,没有执行列表中的【5】 break else: print('end')
1 测试contiune数据1 2 3 测试contiune数据3 4 测试contiune数据4
In [35]:
adct = {'a':1,'b':2} for k,v in adct.items(): print(k,':',v) for k in adct.keys(): print(k) for v in adct.values(): print(v)
a : 1 b : 2 a b 1 2
4.2.3 for语句与range()函数
range([start,]stop[,step]) start 可选参数,起始数,默认为0 stop 终止数 step 可选参数,步长,每次循环的增长值
In [40]:
for i in range(4): #从0开始取4位 print(i) print('------------------') #分隔符,方便对比 for i in range(1,9,3): #从1到9,每个3个数取一次 print(i)
0 1 2 3 ------------------ 1 4 7
4.2.4 for语句与内置迭代函数
enumerate(seq) 编号迭代 sorted(seq) 排序迭代 reversed(seq) 翻转迭代 zip(seq1,seq2...) 并行迭代
In [49]:
alist = [1,2,3,4,5,6] for i,item in enumerate('abcdefg'): print(i,item) print('-------------------------------') for i,item in enumerate(alist): print(i,item)
0 a 1 b 2 c 3 d 4 e 5 f 6 g ------------------------------- 0 1 1 2 2 3 3 4 4 5 5 6
In [56]:
alist = [3,2,5,6,3,4] for i in sorted(alist): print(i) print('-----------------------') for i in reversed(alist): print(i)
2 3 3 4 5 6 ----------------------- 4 3 6 5 2 3
In [58]:
lsta = {1,2} lstb = {3,4} lstc = {5,6,7} for i,j,k in zip(lsta,lstb,lstc): #当长度不一致的时候,只遍历到最短的序列长度 print('%d:%d:%d' %(i,j,k))
1:3:5 2:4:6
4.3 用while循环执行语句
In [68]:
alst = [1,2,3,4,5,] total = len(alst) i = 0 while i <= total: print(i) i+=1 #不加这个容易出现死循环,下一节将提到这个运算符 else: print('end') print('----------------------') #做一个与for的比较 for i in alst: print(i) else: print('end')
0 1 2 3 4 5 end ---------------------- 1 2 3 4 5 end
4.3.2 增量赋值运算符
+、-、*、/、//、%、&、^、>>、<<
In [70]:
x=0 x+=1 #意义为x=x+1 print(x)
1
4.4 推导或内涵
4.4.1 推导基础
为什么要使用推导,看下面两个列子:
In [76]:
square = [i+i for i in range(1,11)] print(square) print('-----------------------') square_1 = [] for i in range(1,11): square_1.append(i+i) print(square_1)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20] ----------------------- [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
In [77]:
keys = ['name','age','weight'] values = ['Bob','23','68'] adct = {k:v for k,v in zip(keys,values)} print(adct)
{'name': 'Bob', 'age': '23', 'weight': '68'}
4.4.2 推导进阶
In [81]:
# square_odd = [i**i for i in range(1,11) if i**i %2 ==1] print(square_odd)
[1, 27, 3125, 823543, 387420489]