第2章 控制流
2.1 布尔值
“布尔”数据类型只有两种值:True和False。
2.2 比较操作符
- 这些操作符根据给它们提供的值,求值为True或False。
- 如果两边的值一样,==(等于)求值为True。如果两边的值不同,!=(不等于)求值为False。==和!=操作符实际上可以用于所有数据类型的值。
- 另一方面,<、>、<=和>=操作符仅用于整型和浮点型值。
2.3 布尔操作符
2.3.1 二元布尔操作符
and和or操作符总是接受两个布尔值(或表达式),所以它们被认为是“二元”操作符。
2.3.2 not操作符
和and和or不同,not操作符只作用于一个布尔值(或表达式)。not操作符求值为相反的布尔值。
2.4 混合布尔和比较操作符
在所有算术和比较操作符求值后,Python先求值not操作符,然后是and操作符,然后是or操作符。
2.5 控制流的元素
2.5.1 条件
条件总是求值为一个布尔值,True或False。控制流语句根据条件是True还是False,来决定做什么。几乎所有的控制流语句都使用条件。
2.5.2 代码块
代码块有3条规则。
1.缩进增加时,代码块开始。
2.代码块可以包含其他代码块。
3.缩进减少为零,或减少为外面包围代码块的缩进,代码块就结束了。
2.6 程序执行
2.7 控制流语句
2.7.1 if语句
if name == 'Alice':
print('Hi, Alice.')
2.7.2 else语句
if name == 'Alice':
print('Hi, Alice.')
else:
print('Hello, stranger.')
2.7.3 elif语句
- 虽然只有if或else子句会被执行,但有时候可能你希望,“许多”可能的子句中有一个被执行。elif语句是“否则如果”,总是跟在if或另一条elif语句后面。它提供了另一个条件,仅在前面的条件为False时才检查该条件。
- 如果有一系列的elif语句,仅有一条或零条子句会被执行。一旦一个语句的条件为True,剩下的elif子句会自动跳过。
- 可以选择在最后的elif语句后面加上else语句。在这种情况下,保证至少一个子句(且只有一个)会执行。如果每个if和elif语句中的条件都为False,就执行else子句。
2.7.4 while循环语句
spam = 0
while spam < 5:
print('Hello, world.')
spam = spam + 1
name = ''
while name != 'your name':
print('Please type your name.')
name = input()
print('Thank you!')
2.7.6 break语句
如果执行遇到break语句,就会马上退出while循环子句。在代码中,break语句仅包含break关键字。
2.7.7 continue语句
如果程序执行遇到continue语句,就会马上跳回到循环开始处,重新对循环条件求值(这也是执行到达循环末尾时发生的事情)。
如果你运行一个有缺陷的程序,导致陷在一个无限循环中,那么请按Ctrl-C。这将向程序发送KeyboardInterrupt错误,导致它立即停止。
2.7.8 for循环和range()函数
在用于条件时,0、0.0和' '(空字符串)被认为是False,其他值被认为是True。
print('My name is')
for i in range(5):
print('Jimmy Five Times (' + str(i) + ')')
2.7.9 等价的while循环
2.7.10 range()的开始、停止和步长参数
for i in range(12, 16):
print(i)
12
13
14
15
for i in range(0, 10, 2):
print(i)
0
2
4
6
8
for i in range(5, -1, -1):
print(i)
5
4
3
2
1
0
2.8 导入模块
import random
for i in range(5):
print(random.randint(1, 10))
- import语句的另一种形式包括from关键字,之后是模块名称,import关键字和一个星号,例如from random import *。
- 使用这种形式的import语句,调用random模块中的函数时不需要random.前缀。但是,使用完整的名称会让代码更可读,所以最好是使用普通形式的import语句。
2.9 用sys.exit()提前结束程序
import sys
while True:
print('Type exit to exit.')
response = input()
if response == 'exit':
sys.exit()
print('You typed ' + response + '.')