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]]

 

posted @ 2020-02-14 16:22  Juno3550  阅读(347)  评论(0编辑  收藏  举报