Python复习笔记——选择与循环
条件表达式
- 算术运算符: + 、 − 、 ∗ 、 / 、 / / 、 +、-、*、/、//、%、** +、−、∗、/、//、
- 关系运算符: > 、 < 、 = = 、 < = 、 > = 、 ! = , >、<、==、<=、>=、!=, >、<、==、<=、>=、!=,可以连续使用
>>> 1<2<3
True
>>> 1<2>3
False
>>> 1<3>2
True
- 测试运算符: in、not in、is、is not
- 逻辑运算符:and、or、not,注意短路求值
- 位运算符:~、&、|、 ^、 <<、>>
- 在选择和循环结构中,条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价
>>> if 3: #使用整数作为条件表达式
print(5)
5
>>> a = [1, 2, 3]
>>> if a: #使用列表作为条件表达式
print(a)
[1, 2, 3]
>>> a = []
>>> if a:
print(a)
else:
print('empty')
empty
>>> i = s = 0
>>> while i <= 10: #使用关系表达式作为条件表达式
s += i
i += 1
>>> print(s)
55
>>> i = s = 0
>>> while True: #使用常量True作为条件表达式
s += i
i += 1
if i > 10:
break
>>> print(s)
55
>>> s = 0
>>> for i in range(0, 11, 1): #遍历迭代对象中的所有元素
s += i
>>> print(s)
55
-
逻辑运算符and和or以及关系运算符具有惰性求值特点,只计算必须计算的表达式
-
以“and”为例,对于表达式“表达式1 and 表达式2”而言,如果“表达式1”的值为“False”或其他等价值时,不论“表达式2”的值是什么,整个表达式的值都是“False”,此时“表达式2”的值无论是什么都不影响整个表达式的值,因此将不会被计算,从而减少不必要的计算和判断
-
在设计条件表达式时,如果能够大概预测不同条件失败的概率,并将多个条件根据“and”和“or”运算的短路求值特性来组织先后顺序,可以大幅度提高程序运行效率
-
在Python中,条件表达式中不允许使用赋值运算符“=”
>>> if a=3:
SyntaxError: invalid syntax
>>> if (a=3) and (b=4):
SyntaxError: invalid syntax
双分支结构
- value1 if condition else value2
- 当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。在value1和value2中还可以使用复杂表达式,包括函数调用和基本输出语句。这个结构的表达式也具有惰性求值的特点
for循环与while循环
-
Python提供了两种基本的循环结构语句——while和for
-
while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况
-
for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素
-
一般优先考虑使用for循环
-
相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑
-
for循环和while循环都可以带else
while 条件表达式:
循环体
[else: # 如果循环是因为break结束的,就不执行else中的代码
else子句代码块]
for 取值 in 序列或迭代对象:
循环体
[else:
else子句代码块]
break和continue
- break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束
- continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环
>>> for n in range(100, 1, -1):#计算小于100的最大素数
for i in range(2, n):
if n%i == 0:
break
else:
print(n)
break
97