Python 控制语句
1. 判断语句
2. 循环语句
3. break 和 continue 的作用
4. 列表生成式
1. 判断语句
语法:
1 if 条件1: 2 满足条件1时所做的事 3 ... 4 elif 条件2: 5 满足条件2时所做的事 6 ... 7 elif 条件3: 8 满足条件3时所做的事 9 else: 10 以上条件均不满足时所做的事 11 ...
示例:if 嵌套
1 ticket = 1 # 1代表有车票,0代表没车票 2 knife_len = 8 # 行李中所带工具刀的长度 3 gas = 1 # 1代表携带了易燃气体,0代表未携带 4 5 6 if ticket == 1: 7 print("有车票,可进站") 8 if knife_len > 9: 9 print("安检不通过,刀具长度不符合要求") 10 elif gas == 1: 11 print("安检不通过,携带了易燃气体") 12 else: 13 print("安检通过") 14 else: 15 print("没车票,无法进站")
示例:条件短路
1 >>> if 1 or 1/0: # 当or前面的条件满足时,or后面的条件即被短路(不执行) 2 ... pass 3 ... 4 >>> if 0 and 1/0: # 当and前面的条件不满足时,and后面的条件即被短路 5 ... pass 6 ...
2. 循环语句
2.1 for 循环
在 Python中 for 循环可以遍历任何序列的项目,如一个列表、字符串等。
语法:
1 for 临时变量 in 需要遍历的序列(如列表): 2 满足循环条件(序列不为空)时执行的代码 3 else: 4 不满足循环条件(序列为空)或已完成循环条件时的执行代码
示例:
1 >>> for i in range(5,0,-1): 2 ... print(i) 3 ... 4 5 5 4 6 3 7 2 8 1 9 >>> 10 >>> for i in []: 11 ... print(i) 12 ... else: 13 ... print("没有数据") 14 ... 15 没有数据
示例:for...else...
1 for x in range(5): 2 if x == 2: 3 print(x) 4 # break 5 else: 6 print("执行else....")
上述代码:当缺少break关键字时,程序的执行结果是:
2 执行else....
当具备break关键字时,程序执行结果为:
2
总结,for...else... 的执行顺序为:
- 当可迭代对象完成所有迭代后且此时的可迭代对象为空时,如果存在else子句则执行else子句,没有则继续执行后续代码;
- 如果迭代对象因某种原因(如带有break关键字)提前退出迭代,则else子句不会被执行,程序将会直接跳过else子句继续执行后续代码。
2.2 while 循环
语法:
1 while 条件: 2 条件满足时所做的事
示例1:计算1~100的累积和(包括1和100)
1 i = 1 2 result = 0 3 4 while i <= 100: 5 result = i + result 6 i += 1 7 8 print("累积结果为:%d" % result)
示例2:计算1~100之间偶数的累积和(包含1和100)
1 i = 1 2 result = 0 3 4 while i <= 100: 5 if i % 2 == 0: 6 result = i + result 7 i += 1 8 9 print("累积结果为:%d" % result)
示例3:while嵌套打印以下图示
*
* *
* * *
* * * *
* * * * *
1 i = 1 2 3 while i <= 5: 4 j = 1 5 while j<=i: 6 print("*", end=" ") 7 j += 1 8 if i < 5: # 去掉第6行换行 9 print() 10 i += 1
示例4:打印九九乘法表
1 i = 1 2 3 while i <= 9: 4 j = 1 5 while j <= i: 6 print("%d * %d = %d" %(j, i, j*i), end="\t") 7 j += 1 8 if i < 9: 9 print() 10 i += 1
3. break 和 continue 的作用
作用
- break:用来结束整个循环。
- continue:用来结束本次循环,紧接着执行下一次的循环。
注意点
- break/continue:只能用在循环中,除此以外不能单独使用。
- break/continue:在嵌套循环中,只对最近的一层循环起作用。
示例:
1 >>> for i in "abcd": 2 ... if i != "c": 3 ... print(i) 4 ... else: 5 ... break 6 ... 7 a 8 b 9 >>> 10 >>> for i in "abcd": 11 ... if i != "c": 12 ... print(i) 13 ... else: 14 ... continue 15 ... 16 a 17 b 18 d
4. 列表生成式
列表生成式,就是指轻量级循环创建列表。
1 >>> a = [i for i in range(5)] # 基本方式 2 >>> a 3 [0, 1, 2, 3, 4] 4 >>> a = [i for i in range(1,10,2)] 5 >>> a 6 [1, 3, 5, 7, 9] 7 >>> a = [i for i in range(1,10) if i%2 != 0] # 加入 if 语句 8 >>> a 9 [1, 3, 5, 7, 9] 10 >>> a = [i if i%2==0 else False for i in range(10)] # if...else...语句 11 >>> a 12 [0, False, 2, False, 4, False, 6, False, 8, False] 13 >>> a = [(x, y) for x in range(1, 3) for y in range(3)] # 两个 for 循环 14 >>> a 15 [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] 16 >>> a = [(x, y, z) for x in range(1, 3) for y in range(3) for z in range(4, 6)] # 三个 for 循环 17 >>> a 18 [(1, 0, 4), (1, 0, 5), (1, 1, 4), (1, 1, 5), (1, 2, 4), (1, 2, 5), (2, 0, 4), (2, 0, 5), (2, 1, 4), (2, 1, 5), (2, 2, 4), (2, 2, 5)]
练习题
1. 生成一个 [[1,2,3],[4,5,6]....] 的列表,其最大值在100以内。
1 # 方式一 2 [[x, x+1, x+2] for x in range(1, 100, 3)] 3 # 方式二 4 [[x-2, x-1, x] for x in range(3, 100, 3)]
2. 请写出一段 Python 代码实现分组一个 list 里面的元素,比如 [1,2,3,...100] 变成 [[1,2,3],[4,5,6]....] 。
1 >>> old_list = [x for x in range(1,101)] 2 >>> new_list = [old_list[x:x+3] for x in range(0, len(old_list), 3)] 3 >>> new_list 4 [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24], [25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36], [37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48], [49, 50, 51], [52, 53, 54], [55, 56, 57], [58, 59, 60], [61, 62, 63], [64, 65, 66], [67, 68, 69], [70, 71, 72], [73, 74, 75], [76, 77, 78], [79, 80, 81], [82, 83, 84], [85, 86, 87], [88, 89, 90], [91, 92, 93], [94, 95, 96], [97, 98, 99], [100]]