第3章 Python选择与循环
第3章 选择与循环 3.1 条件表达式 算术运算符:+、-、*、/、//、%、**、~ 关系运算符:、、==、=、=、!=,可以连续使用,如 print 123 True print 123 False print 132 True 测试运算符:in、not in、is、is not 逻辑运算符:and、or、not,注意短路求值 位运算符:~、、|、 ^、 、 3.1 条件表达式 在选择和循环结构中,条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。从这个意义上来讲,几乎所有的Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式。 3.1 条件表达式 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 3.1 条件表达式 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 3.1 条件表达式 比较特殊的运算符还有逻辑运算符“and”和“or”,这两个运算符具有短路求值或惰性求值的特点,简单地说,就是只计算必须计算的表达式的值。在设计条件表达式时,在表示复杂条件时如果能够巧妙利用逻辑运算符“and”和“or”的短路求值或惰性求值特性,可以大幅度提高程序的运行效率,减少不必要的计算与判断。以“and”为例,对于表达式“表达式1 and 表达式2”而言,如果“表达式1”的值为“False”或其他等价值时,不论“表达式2”的值是什么,整个表达式的值都是“False”,此时“表达式2”的值无论是什么都不影响整个表达式的值,因此将不会被计算,从而减少不必要的计算和判断。 3.1 条件表达式 在设计条件表达式时,如果能够大概预测不同条件失败的概率,并将多个条件根据“and”和“or”运算的短路求值特性进行组织,可以大幅度提高程序运行效率。例如,下面的函数用来使用用户指定的分隔符将多个字符串连接成一个字符串,如果用户没有指定分隔符则使用逗号。 def Join(chList, sep=None): return (sep or ,).join(chList) chTest = [1, 2, 3, 4, 5] Join(chTest) 1,2,3,4,5 Join(chTest, :) 1:2:3:4:5 Join(chTest, ) 1 2 3 4 5 3.1 条件表达式 另外,在Python中,条件表达式中不允许使用赋值运算符“=”,避免了其他语言中误将关系运算符“==”写作赋值运算符“=”带来的麻烦,例如下面的代码,在条件表达式中使用赋值运算符“=”将抛出异常,提示语法错误。 if a=3: SyntaxError: invalid syntax if (a=3) and (b=4): SyntaxError: invalid syntax 3.2.1 单分支选择结构 if 表达式: 语句块 a,b=input(Input two number:) if ab: a,b=b,a print a,b 3.2.2 双分支结构 if 表达式: 语句块1 else: 语句块2 chTest = [1, 2, 3, 4, 5] if chTest: print(chTest) else: print(Empty) [1, 2, 3, 4, 5] 3.2.2 双分支结构 Python还支持如下形式的表达式: value1 if condition else value2 当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。另外,在value1和value2中还可以使用复杂表达式,包括函数调用和基本输出语句。下面的代码演示了上面的表达式的用法,从代码中可以看出,这个结构的表达式也具有惰性求值的特点。 a = 5 print(6) if a3 else print(5) 6
原创力文档

文档评论(0)