购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 运算符

学习Python编程,要掌握变量、运算、流程控制结构三个基本要素。编程中的运算要用到运算符。运算符是一些特殊的符号,主要应用于数学计算、比较大小、逻辑判断等。Python运算符主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符,其中,比较运算符也称为关系运算符。

使用运算符将不同的数据、变量按照一定的规则连接组成的式子称为表达式。使用算术运算符连接的式子称为算术表达式;使用关系表达式连接的式子称为关系表达式。下面将详细介绍这些常用的运算符。

2.3.1 算术运算符

算术运算符是处理数值计算的符号,在数学运算时应用很多。常用的算术运算符见表2—3。

表2—3 常用的算术运算符

如果多个算术运算符出现在同一个表达式中,则会按照先乘除、后加减的顺序进行运算,如果有括号,则先运算括号里面的。表2—3中算术运算符的优先级从高到低的顺序是**、*、/、%、//、+、-。

注意: 使用除法运算符(/)、整除运算符(//)、取余运算符(%)时,除数不能为0。如果除数是0,程序则会出现异常。在Python中,如果违背基本的数学规律进行数值计算,程序则会出现异常。

【实例2—7】 询问小明这次考试的成绩,包括语文、数学、英语,分别计算这三科成绩的总分和平均分,代码如下:

    #===第2章代码2-7.py===#
    print("小明的语文考了多少分?")
    language=float(input())
    print("小明的数学考了多少分?")
    math=float(input())
    print("小明的英语考了多少分?")
    english=float(input())
    total=language+math+english
    average=total/3
    print("这三科的总分是",total)
    print("这三科的平均分是",average)

运行结果如图2—12所示。

2.3.2 赋值运算符

在Python中,使用赋值语句:变量名=value,创建变量,其中的等号(=)就是赋值运算符。赋值运算符将右边的值赋给左边的变量,也可以进行数学运算后再赋值给左边的变量。常用的赋值运算符见表2—4。

图2—12 代码2—7.py的运行结果

表2—4 常用的赋值运算符

注意: 对于初学者,使用好简单的赋值运算符即可。代码的可读性很重要,如果不熟悉复杂赋值运算符而应用在编程中,则会出现读不懂代码的情况。

2.3.3 比较(关系)运算符

生活在现实中的人类,总是难免和别人比较。例如银行存折上余额的多少、考试成绩的高低、工作的好坏、工资的数额等。在Python中,使用比较运算符(也称为关系运算符)可对变量或表达式的结果进行大小、真假的比较。如果结果为真,则返回值为True;如果结果为假,则返回值为False。Python中的比较运算符见表2—5。

表2—5 比较运算符

注意: 不要混淆=和==运算符。在Python中,不仅数值可以比较大小,字符也可以比较大小。只不过字符比较大小时,是比较字符对应的ASCII码值的大小。

比较运算符经常用在条件语句中,作为判断语句。条件语句是流程控制结构的一种类型。

【实例2—8】 创建一个程序,询问小明这次的数学成绩,然后询问小明的邻居小亮的数学成绩。如果小明的成绩不低于小亮的数学成绩,则打印小明高兴;如果小明的成绩低于小亮的数学成绩,则打印小明不高兴,代码如下:

    #===第2章代码2-8.py===#
    print("小明这次考试,数学考了多少分?")
    ming=float(input())
    print("小明的邻居小亮,这次数学成绩是多少?")
    liang=float(input())
    if ming>=liang:
        print("小明高兴")
    else:
        print("小明不高兴")

运行结果如图2—13所示。

图2—13 代码2—8.py的运行结果

注意: Python使用代码缩进和冒号“:”区分代码之间的层次。这与C语言通过大括号“{}”分隔代码块有很大的不同。例如在2—8代码中,条件语句if…else…的冒号后一行代码,要缩进4个空格,即按一个<Tab>键实现的缩进量。

2.3.4 逻辑运算符

现实生活中,有的事情需要同时满足多个条件才会发生。例如满足什么条件才能称为下雨了。某个地点,既要满足天上有云,还要有大量的水滴落在地上,同时满足这两个条件才能称为下雨。这就需要逻辑运算符进行逻辑判断。

逻辑运算符是对布尔值真、假进行运算,运算后的结果仍然是一个布尔值。Python中的逻辑运算符主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)。逻辑运算符的用法见表2—6。

表2—6 逻辑运算符的用法

使用逻辑运算符进行逻辑运算时,其运算结果见表2—7。

表2—7 使用逻辑运算符进行逻辑运算的结果

【实例2—9】 闰年的年份可以被4整除而不能被100整除,或者能被400整除。输入一个年份,判断是否是闰年,代码如下:

    #===第2章代码2-9.py===#
    print("请输入年份:")
    year=int(input())
    is_leap=(year%4==0 and year%100!=0)or(year%400==0)
    if is_leap:
        print(year,"是闰年")
    else:
        print(year,"不是闰年")

运行结果如图2—14所示。

2.3.5 位运算符

位运算符是把数字作为二进制进行计算的运算符。这对于计算机来讲是很自然的,因为计算机就是使用二进制存储数字的。对于操作计算机的人来讲,首先是把数字转换成二进制数,然后使用位运算符对二进制数进行操作,最后转换成十进制或其他进制输出。

Python中的位运算符有位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<<)、右移位(>>)运算符。这些位运算符表明Python具有操作计算机底层内存的能力,数字电路中经常用到位运算符。

图2—14 代码2—9.py的运行结果

位与运算的符号是“&”。位与运算的法则是当两个二进制数中只有对应数位都是1时,结果数位才是1,否则为0。如果两个二进制数的精度不同,则结果与精度高的二进制数相同。例如“010&011”的结果是010。

位或运算的符号是“|”。位或运算的法则是当两个二进制数中只有对应数位都是0时,结果数位才是0,否则为1。如果两个二进制数的精度不同,则结果与精度高的二进制数相同。例如“010|011”的结果是011。

位异或运算的符号是“^”。位异或的运算法则是当两个二进制数中只有对应数位相同(同时为1或同时为0)时,结果才是0,否则为1。如果两个二进制数的精度不同,则结果与精度高的二进制数相同。例如“010^011”的结果是001。

位取反运算也称为位非运算,其运算符是“~”。位取反运算的法则是将二进制数中的1修改为0,将0修改为1。例如“~010”的结果是101。

【实例2—10】 对十进制数字13和7进行位与运算、位或运算、位异或运算,并打印输出结果。对十进制数13进行位取反运算,并打印输出结果,代码如下:

    #===第2章代码2-10.py===#
    print("13&7=",str(13&7))
    print("13|7=",str(13|7))
    print("13^7=",str(13^7))
    print("~13=",str(~13))

运行结果如图2—15所示。

左移运算符(<<)是将一个二进制数向左移动指定的位数,左边(高位端)溢出的位数被丢弃,右边(低位端)的空位用0补充。例如1<<1得到的结果是2;1<<3得到的结果是8;3<<2得到的结果是12。二进制数左移运算转换成十进制数后,相当于乘以2的 n 次方。运行结果如图2—16所示。

右移运算符(>>)是将一个二进制数向右移动指定的位数,右边(低位端)溢出的位数被丢弃,如果左边的最高位是0(正数),则左侧空位填入0;如果左边的最高位是1(负数),则左侧空位填入1。例如64>>1的结果是16;64>>2的结果是32;-32>>3的结果是-4。二进制数右移运算转换成十进制数后,相当于除以2的 n 次方。运行结果如图2—17所示。

图2—15 代码2—10.py的运行结果

图2—16 左移运算符的运行结果

图2—17 右移运算符的运行结果

用位运算符来操作数字,需要考虑一个问题:一个数字在Python中占用多少字节?一字节是由8个二进制数组成的。在Python中,可以通过模块Sys实现,代码如下:

    import sys          #引入模块
    sys.getsizeof(13)           #调用模块函数getsizeof()计算数字13占用的字节数
    sys.getsizeof(8)
    sys.getsizeof(0)

运行结果如图2—18所示。

注意: Python中关于模块的知识会在第5章详细叙述。在32位操作系统和64位操作系统中,一个数字占用的内存字节数是不同的。各位读者可以使用上面的代码,获取计算机中的某个数字存储需要的字节数。

图2—18 数字占用多少字节的运行结果

2.3.6 运算符的优先级

运算符的优先级是指同一个表达式中出现了不同的运算符,程序在执行时,先执行哪一个运算符,后执行哪一个运算符。这与数学的四则运算规律(先乘除,后加减)是相同的道理。

如果在一个表达式中有多种运算符,则运算符的执行规律为优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的运算符按照从左到右的顺序执行。如果有小括号,则先执行小括号中的运算符。运算符的优先级从高到低的顺序见表2—8。

表2—8 运算符的优先级 oOP2sMzUKmmmE3TqsxXYwnmwD/Xw1EMlS1h1sHvp8wyF5A1yfnzFtd4VWaVz0JJf

点击中间区域
呼出菜单
上一章
目录
下一章
×