当前位置: 首页 > 科技观察

Python7类运算符详解及代码示例

时间:2023-03-12 19:21:41 科技观察

介绍:运算的概念起源于数学,即参与运算的元素通过运算算法可以得到确定的、可重复的结果。计算体系结构作为计算机的核心功能,构成了计算机系统的逻辑体系。计算机计算不局限于普通的数学计算,它更接近“逻辑计算”的概念,其根本目的是实现逻辑计算。算子是算法的具体体现。Python提供了七种运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、恒等运算符和隶属运算符,从而实现了多种运算功能。01算术运算符算术运算符是对操作数进行算术运算的一系列符号,可以满足一般的计算要求。Python中的算术运算符如下。+:Add,两个对象相加-:Subtract,得到负数或一个数减去另一个数*:Multiply,两个数相乘或返回一个重复多次的字符串/:Divide,x除以y%:Modulus,返回余数ofdivision**:幂,返回x的y次方//:除以整数,返回商的整数部分算术运算结果的数字类型与操作数的类型有关。在进行除法(/)运算时,无论商是整数还是浮点数,运算结果都是浮点数。要得到整数商,需要用双斜杠(//)做整数除法,除数必须是整数。对于其他运算,只要任何一个操作数是浮点数,运算结果都是浮点数。Python算术运算的基本用法如下。num_int=4num_float=4.0print('整数与浮点数之和为:',num_int+num_float)#Out[1]:整数与浮点数之和为:8.0print('整数之差andfloating-pointnumbersis:',num_int-num_float)#Out[2]:整数和浮点数的区别是:0.0print('整数和浮点数的乘积是:',num_int*num_float)#Out[3]:一个整数和一个浮点数的乘积是:16.0print('浮点数和整数的商是:',num_float/num_int)#Out[4]:浮点数与整数的商为:1.0print('浮点数对整数取模的结果为:',num_float%num_int)#Out[5]:取模的结果浮点数对整数的次幂为:0.0print('浮点数的整数次幂为:',num_float**num_int)#Out[6]:浮点数的整数次幂为:256.002赋值运算符rs赋值运算符用于赋值和更新变量。Python的赋值运算符除了基本的赋值运算符(=)外,还包括加法赋值运算符、减法赋值运算符等。严格来说,除了基本的赋值运算符外,其他都是特殊的赋值运算符。Python中的赋值运算符如下。=:赋值运算+=:加法赋值运算-=:减法赋值运算*=:乘法赋值运算/=:除法赋值运算%=:模赋值运算**=:幂赋值运算//=:四舍五入和除法赋值运算表2-2中的特殊赋值运算符可以看作是变量的快速更新,更新意味着变量存在,而对于之前不存在的变量,则不能使用特殊赋值运算符。Python赋值操作的基本用法如下。num_int1=4print('赋值后,num_int1为:',num_int1)#Out[7]:赋值后,num_int1为:4num_int1=4+6print('赋值后,num_int1为:',num_int1)#Out[8]:赋值后,num_int1为:10num_int1=4*2print('赋值后,num_int1为:',num_int1)#Out[9]:赋值后,num_int1为:8num_int1=4/2print('赋值后,num_int1为:',num_int1)#Out[10]:赋值后,num_int1为:2.0num_int1=4%2print('赋值后,num_int1为:',num_int1)#Out[11]:赋值后,num_int1为:0num_int1=4**2print('Afterassignment,num_int1is:',num_int1)#Out[12]:Afterassignment,num_int1is:1603比较运算符比较运算符用于比较数字的大小或是否相等。Python中的比较运算符如下。==:表示相等,比较对象是否相等!=:表示不相等,比较两个对象是否不相等>:表示大于,返回x是否大于y<:表示小于,返回x是否小于y。所有比较运算符都返回1表示真,0表示假。它们分别相当于特殊变量True和False。注意这些变量名首字母大写>=:表示大于等于,返回x是否大于等于y<=:表示小于等于,返回x是否小于等于y比较运算符也可用于字符之间的比较。Python中的字符使用ASCII码,每个字符都有自己的ASCII码。字符比较的本质是字符ASCII码的比较。Python比较运算的基本用法如下。num_int=4num_float=4.0print('num_int和num_float相等:',num_int==num_float)#Out[13]:num_int和num_float相等:Trueprint('num_int和num_float不相等:',num_int!=num_float)#Out[14]:num_int是否不等于num_float:Falseprint('Isnum_intgreaterthannum_float:',num_int>num_float)#Out[15]:Isnum_intgreaterthannum_float:Falseprint('Isnum_intlessthannum_float:',num_int=num_float)#Out[17]:num_int是否大于等于equaltonumfloat:Trueprint('Isnum_intlessthanorequaltonum_float:',num_int<=num_float)#Out[18]:Whethernum_intislessthanorequaltonum_float:True04逻辑运算符逻辑运算是判断两者之间的关系事物之间的“与”、“或”、“非”。Python中的逻辑运算符包括and、or、not,如下所示。and,xandy:表示and,当x为False时,"xandy"返回False,否则返回y的计算值or,xory:表示or,当x为True时,"xory"返回x的值的值,否则返回y的计算值not,notx:表示not,当x为True时,“notx”返回False,否则返回TruePython逻辑运算的基本用法如下。num_bool1=Falsenum_bool2=Trueprint('num_bool1andnum_bool2返回值为:',num_bool1andnum_bool2)#Out[19]:num_bool1andnum_bool2返回值为:Falseprint('num_bool1ornum_bool2返回值为:',num_bool1ornum_bool2)#Out[20]:num_bool1ornum_bool2返回值为:bool2Trueprint('notnum_bool2'sreturnvalueis:',not(num_bool2))#Out[21]:notnum_bool2'sreturnvalueis:False05位运算符十进制数被人们广泛使用,但是对于计算机来说,二进制数反而更重要,所有计算机计算基于二进制数计算。按位运算是将十进制数转换为二进制数,然后进行运算的过程。Python中的按位运算符如下。&:表示按位与,参与运算的两个值对应的位都为1,则该位的结果为1,否则为0|:表示按位或,只要对应两个中的一个二进制位为1,结果位为1^:表示按位异或,当对应的两个二进制位不同时,结果为1~:表示按位取反,将每个二进制位取反,将1变成0,将0变成1。~x类似于-x-1<<:表示左移,二进制位左移,“<<”右边的数字指定移位位数,高位舍去,低位补0>>:表示右移,“>>”将左边操作数的二进制位全部右移,“>>”右边的数字指定移位的位数.Python按位运算的基本用法如下。num_int1=15#15=00001111num_int2=23#23=00010111#bitwiseAND,num_int1&num_int2=00000111print('num_int1bitwiseandnum_int2resultis:',num_int1&num_int2)#Out[22]:num_int1bitwiseandnum_int2resultis:7#BitwiseOR,num_int1|num_int2=00011111print('num_int1bitwiseornum_int2result:',num_int1|num_int2)#Out[23]:num_int1bitwiseornum_int2result:31#BitwiseXOR,num_int1^num_int2=00011000print('num_int1bitwiseXORnum_int2resultis:',num_int1^num_int2)#Out[24]:num_int1bitwiseXORnum_int2resultis:24#bitwiseinversion,~num_int1=11110000print('num_int1bitwiseTheresultis:',~num_int1)#Out[25]:num_int1按位取反结果为:-16#向左移动两位,num_int1<<22=00111100print('num_int1向左移动两位,结果为:',num_int1<<2)#Out[26]:num_int1向左移动两位,结果为:60#向右移动两位,num_int1>>2=00000011print('num_int1向右移动两位,结果为:',num_int1>>2)#欧t[27]:num_int1右移两位,结果为:3在按位运算中,取反运算比较难理解,因为涉及到补码的计算。十进制数的原始二进制码包括一个符号位和一个二进制值。以“60”为例,它的原始二进制码是“00111100”,第一位是符号位,0代表正数,1代表负数。正数的补码与原二进制码相同,负数的补码是原二进制码的符号位不变,其他位在最后一位加1逆转。否定操作可以概括为以下5个步骤。取十进制数的原始二进制码。补充原始代码。补码取反(取最后结果的补码)。将结果取反再取补码(得到最终结果的原码)。二进制原码转十进制数。06IdentityOperatorsIdentityOperators用于比较两个对象的存储单元,如下所示。is:is用于判断两个对象的存储单元是否相同not:isnot用于判断两个对象的存储单元是否不同。Python身份运算的基本使用方法如下。num_int1=15num_int3=15print('num_int1和num_int3的存储单元是否相同:',num_int1isnum_int3)#Out[28]:num_int1和num_int3的存储单元是否相同:Truenum_int2=15.0print('是的存储单元num_int1和num_int2相同:',num_int1isnum_int2)#Out[29]:num_int1和num_int2的存储单元是否相同:False#如果存储单元相同则返回True,否则返回Falseprint('num_int1和num_int3存储unitsaredifferent:',num_int1isnotnum_int3)#Out[30]:num_int1和num_int3的存储单元是否不同:Falseprint('num_int1和num_int2的存储单元是否不同:',num_int1isnotnum_int2)#Out[31]:num_int1和num_int2的存储单元不同:True在恒等运算中,对内存地址相同的两个变量进行is运算时,返回True;当对内存地址不同的两个变量进行isnot操作时,返回True。当a和b获得相同的值时,两个变量获得相同的内存地址。07隶属运算符隶属运算符的作用是判断一个指定的值是否存在于一个序列中,包括字符串、列表和元组,如下图。in:如果在指定序列中找到指定值,则返回True,否则返回Falsenotin:如果在指定序列中找不到指定值,则返回True,否则返回FalsePython成员操作的基本用法如下。num_int1=15list2=[1,'apple',15]print('num_int1是否在list2:',num_int1inlist2)#Out[32]:num_int1是否在list2:Truearray=('orange',6,15)print('Isnum_int1notinthearray:',num_int1notinarray)#Out[33]:Isnum_int1notinthearray:False08运算符优先级在Python中,运算符运算非常普遍,通常以表达式的形式进行运算。表达式由运算符和操作数组成。比如“1+2”是一个表达式,其中“+”是运算符,“1”和“2”是操作数。一个表达式通常包含多个运算符。当一个表达式中有多个运算符时,需要考虑运算的顺序,即运算符的优先级。运算符的优先级如下,优先级从上到下递减,相同优先级的运算符从左到右运算。**:指数(最高优先级)~+-:按位翻转,一元加减(最后两个有方法命名为+@和-@)*/%//:乘法、除法、取模和整除+-:加法,减法>><<:右移,左移运算符&:位“与”^|:按位运算符<=<>>=:比较运算符<>==!=:等于运算符=%=/=//=-=+=*=**=:赋值运算符isisnot:恒等运算符innotin:隶属运算符andornot:运算符优先级的逻辑运算符使用方法如下。#先做乘除法,再做加减法print('num_float+num_int1/num_int3=',num_float+num_int1/num_int3)#Out[34]:num_float+num_int1/num_int3=5.0#先做加减法,和然后进行比较运算print('num_int1-num_int2>num_int1-num_int3:',num_int1-num_int2>num_int1-num_int3)#Out[35]:num_int1-num_int2>num_int1-num_int3:False#先执行加减法,再Do恒等判断print('num_int1-num_int3+num_int1isnum_int1:',num_int1-num_int3+num_int1isnum_int1)#Out[36]:num_int1-num_int3+num_int1isnum_int1:True#先求指数,再做减法,最后做恒等判断print('num_float**2-1isnotnum_int2:',num_float**2-1isnotnum_int2)#Out[37]:num_float**2-1isnotnum_int2:True