说明
.py
文件中的每条语句都是顺序执行的,从第一条语句开始逐行执行。实际上函数、方法调用或控制结构都可以使控制流转向,比如条件分支或循环语句。有意外产生时控制流也会被转向
布尔表达式实际上就是对某对象进行布尔运算,并可以产生一个布尔值结果( True
或 False
)。在 Python 中,预定义为常量 False
的布尔表达式、特殊对象 None
、空序列或集合(比如空字符串、列表或元组)、值为 0 的数值型数据项等的布尔结果为 False
, 其他的则为 True
。创建自定义数据类型时,我们可以自己决定这些自定义数据类型在布尔上下文中的返回值
在 Python 中,一块代码,也就是说一条或多条语句组成的序列称为 suite 。由于 Python 中的某些语法要求存在一个 suite,Python 就提供了关键字 pass
,pass
实际上是一条空语句,不进行任何操作,可以用在需要 suite (或者需要指明我们己经考虑了特殊情况)但又不需要进行处理的地方
选择语句 if
Python 常规的 if 语法如下
1 | if boolean_expression 1: |
示例:实现一个猜年龄的游戏
1 | # -*- coding:utf-8 -*- |
循环语句
- 有限循环:有次数限制的循环
- 无限循环:没有次数限制的循环,即死循环
- 流程控制
- continue:结束本次循环,继续进行下一次循环
- break:跳出当前的循环
- for 循环只能是有限循环,while 循环可以是有限循环也可以是无限循环
while
while 语句用于0次或多次执行某个 suite ,循环执行的次数取决于 while 循环中布尔表达式的状态
1 | while boolean_expression: |
只有条件不成立时退出循环,如果条件为真则循环就没有停止的时候,成为一个死循环
1 | while True: |
while 循环具有非常典型的结构,只要还存在需要处理的数据项,就一直循环 ( get_next_item()
与 process_item()
都是在某处定义的自定义函数)。在上面的实例中, while 语句的 suite 中包含了一条 if 语句,该 if 语句本身又包含了自己的 suite,因此在这一实例中必须包含一条 break 语句
上面的猜年龄游戏,每执行一次用户就输入一次数字,程序就会判断一个结果,之后程序就结束了。然而这样并不好,程序应该是一直让用户输入数字,一直到用户输入的数字正确:
1 | # -*- coding:utf-8 -*- |
break
结束当前的循环,不支持接收参数。在死循环中,也可以通过设置一定的条件来结束循环
例如:输出 1 到 10,但是当输出到 5 时不再执行循环
1 | # -*- coding:utf-8 -*- |
continue
结束本次循环,进行下一次循环
例如:输出1-100之间的所有奇数
1 | # -*- coding:utf-8 -*- |
while中的else
while循环中的 else 语句比较特殊,这里的 else 语句,只有在循环正常结束的时候才会执行,什么意思呢?意思就是说如果我们的 while 循环在执行过程中中断了,也就是说执行了break语句,这里的 else 语句就不会被执行
1 | # while循环结构 |
示例
循环没有被中断
1 | num = 0 |
循环被中断
1 | num = 0 |
序列
- 序列就是按照一定的顺序排列起来的一组元素,
range()
语句用来生成一组数字
1 | 10) range( |
rang()
的用法:
1 | range(stop) |
for
Python 的 for 循环语句重用了关键字 in ,与 while 循环类似,for 循环也支持 break 语句与 continue 语句,也包含可选的 else 分支
- 循环结构
1 | for var in sequence: |
- 示例
1 | for i in range(10): |
- 九九乘法表
1 | for row in range(1, 10): |
练习
输入用户名和密码做认证,如果输错三次则退出,正确则输出欢迎登录
- 版本一
1 | # -*- coding: utf-8 -*- |
- 版本二
1 | # -*- coding: utf-8 -*- |
- 版本三
1 | # -*- coding: utf-8 -*- |