软件测试技术

当前位置:首页 > 软件测试技术

《Python学习笔记》第四章

第四章 条件表达式

4.1 布尔表达式

布尔表达式的值只有两个:真和假。在Python语言中,真值为1,假 值为0。下面是Python语言中较常用的比较两个数大小运算符:

x == y   #x等于y 

x != y    #x不等于y

x > y     #x大于y

x < y     #x小于y

x >= y  #x大于等于y

x <= y  #x小于等于y

下面是这些运算符的例子:

>>> x = 3.4

>>> y = 9

>>> z = 4.55

>>> x == y

0

>>> x != z

1

>>> x > y

0

>>> y > x

1

>>> z <= y

1

Python语言中大部分比较操作符的意义与数学中类似。有两个操作符 的用法容易混肴,就是赋值操作符“=”和比较操作符中“==”。在比较两个数是否相等时,经常错误的用赋值操作符“=”作比较,而忘记了 它的真正含义是赋值操作,操作符“==”才是真正比较这两个数是否相 等的运算符。另外,还要注意大于等于和小于等于操作符的写法,不要将 它们写成这样的形式:“=<”和“=>”。 

4.2 逻辑操作符

Python有三种逻辑操作:and、or、not。这三个操作符的语义与其英 语意义相同,分别是:与、或、非。

例如,(x > 0)and(x < 10)这个表达式,and操作符连接两个条件表达 式,只有x大于0,并且x小于10的时候,整个表达式才为真。

再看这个表达式,(n%2 == 0)or(n%3 == 0),or 连接两个判断是否 等于0的表达式,只要n能够被2整除,或是被3整除,这两个表达式只要有 一个为真,整个表达式就为真。

最后,not操作符对表达式的值取反。not(x > y),如果x大于y,取反 后整个表达式的值为假,否则,为真。

严格来说,逻辑操作符的操作数应该为布尔表达式,但Python对此处 理的比较灵活,即使操作数是数字,解释器也把他们当成“表达式”。 非0的数字的布尔值为1,0的布尔值是0。看下面的例子:

>>> a = 1

>>> b = 0

>>> a and b

0

>>> a or b

1

>>> not a

0

>>> not 0

1

在python中空字符串为假,非空字符串为真。非零的数为真。我们研 究一下数字和字符串之间、字符串之间的逻辑操作规律。首先看and操作符:

>>> 9 and "OK"

‘OK’

>>> "OK" and 9

9

>>> "OK" and "ME"

‘ME’

>>> "" and 9 

’’

>>> "" and "OK"

’’

>>> 0 and "OK"

0

只要左边的表达式为真,整个表达式返回的值是右边表达式的值。否则, 返回左边表达式的值。

or操作符的规则是:只要两边的表达式都为真,整个表达式的结果是 左边表达式的值;如果是一真一假,返回真值表达式的值。特别注意的是空值和0的情况,这时候返回的是右边的0或空值: 

>>> "" or 0

0

>>> 0 or ""

’’

not的情况比较简单:

>>> not 0

1

>>> not ’’

1

4.3 条件语句

在程序执行的过程中,时常依据一些条件的变化,改变程序的执行流 程。改变程序流程的功能,主要由条件语句配合布尔表达式来完成。例如:

if (x>0):

print x

当x大于0时,执行print语句;若x小于或等于0,print语句不被执行。

if语句由“头”和“块”组成,它的书写方式在Python中具有典型的 代表性:

Header:

First Statement

Second Statement

......

Last Statement

Other Statement

“头”是if语句的开始,以冒号结束。在“头”里进行条件判断,以确定 是否执行if语句的“块”部分。在if语句的“块”的每一行,必须至少有一 个空格的缩进,缩进表示这一行是属于if语句的一部分。第一个没有缩进 的语句标志着if语句的结束。“块”内至少有一条语句,如果暂时还没有 任何操作,你可以加一条语句pass,它什么都不做,是一条空语句。

需要注意的是if语句行以冒号结束。可能是习惯了C+ +和java中写 法,这个冒号我总是忘了写。这个冒号与文章中冒号的用法类似。例如:

这部手机的特点是:

待机时间长;

价格便宜;

......

操作方便。

所以我买了它。

冒号用以引出要说的内容,if语句同样是引出要执行的语句;在上一个例 子中,手机的特点写完后,缩进结束,表示这一部分内容已经写完了,再 往后就是别的的内容了。同样,if语句后面第一个没有缩进的语句行,就 不属于它的“块”了,而是程序要执行的其它内容了。

第二种if语句的形式是有两个执行流程,关键字else(否则)引出另一 个程序流程。例如:

if x%2 == 0:

print x, "is even"

else:

print x, "is odd"

如果x除以2的余数是0,则x是偶数,执行第一条打印语句;如果x是奇 数,就执行第二条打印语句,也就是else引出的语句。因为x不是奇数就 是偶数,只能二者居其一,所以这两条打印语句只能执行其中的一条, 即这段代码的执行流程有两个分枝。这段代码可用语言表述成:如果x是 偶数,则执行第一条打印语句;否则,x必定是奇数,执行第二条打印语 句。高级程序语言是不是和自然语言很接近?

我们也可以将这段代码“封装”成一个检验奇偶的函数:

def isParity(x):

if x%2 == 0:

print x, "是偶数"

else:

print x, "是奇数

该函数的执行结果如下:

>>> import sys

>>> sys.path.append(’c:\python’) #设定此脚本文件的路径。

>>> from isparity import isParity #从脚本文件中引入函数。

>>> isParity(8)

8 是偶数

>>> isParity(9)

9 是奇数

有时候,程序的分支不止两个,可能是三个,或更多。此时,就需 要elif语句引出更多的分支。elif语句是“else if”的缩写,每一个elif语句为 程序引出一个分支。elif语句的数量没有限制,但最后的分支必须是else语 句,并且只能是最后一个程序分支。请看下面的脚本文件:

def largeNumber(x, y):

if x < y:

print x, "小于", y

elif x > y:

print x, "大于", y

else:

print x, "等于", y

程序按顺序检查条件表达式,当找到第一个满足要求的表达式后,执行此 分支内的语句。剩下的条件,即使有满足要求的,也不做检查。请看上一 函数执行的结果:

>>> import mylib

>>> mylib.largeNumber(3, 9)

3 小于 9

>>> mylib.largeNumber(4, 1.2)

4 大于 1.2

>>> mylib.largeNumber(0, 0)

0 等于 0

相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~