当前位置: 首页 > 后端技术 > Python

Python的运算符

时间:2023-03-26 00:43:24 Python

算术运算符算术运算符主要用于计算机的算术运算类型符号函数+加法,字符串拼接-减法*乘法,字符串重复/除法//floor除法(除法)%余数(除法)**求幂+#数字类型的加法运算print(1+1)#2print(False+1)#1print(0j+1)#(1+0j)#字符串的拼接var1='hello'var2='motherland'print(var1+''+var2)#hellomotherland*#数值类型的乘法print(1*1)#1print(False*1)#0print(0j*1)#0j#字符串重复var1='hello'print(var1)#helloprint(var1*2)#hellohelloprint(var1*3)#hellohellohello/#数字类型的除法运算,结果总是小数,至少返回一位小数print(1/1)#1.0print(False/1)#0.0#print(False/False)#除数不能是0print(10/5)#2.0print(10/3)#3.3333333333333335print(10/2.25)#4.444444444444445//#D数字类型的ivision运算#//当除数或被除数为小数时,运算结果只有小数,永远为小数,小数位为0print(1//1)#1print(100//5)#20print(10.9//1)#10.0print(10//1.5)#6.0print(10.5//1.1)#9.0print(10.0//3)#3.0%#不会除数,求除法的余数print(10%3)#1#ifBoth被除数和被除数都是负数,余数是正常余数的倒数#如果除数是负数,余数是正常余数+除数#如果被除数是负数,余数是第二种情况的倒数print(10%3)#1print(-10%-3)#-1print(10%-3)#-2print(-10%3)#2print(11%4)#3print(-11%-4)#-3print(11%-4)#-1print(-11%4)#1print(15%6)#3print(-15%-6)#-3print(15%-6)#-3print(-15%6)#3**#求数幂print(2**1)#2print(2**2)#4print(2**3)#8print(2**4)#16-#数字类型减法print(1-1)#0print(False-1)#-1print(0j-1)#(-1+0j)比较运算符概念比较两个值是否相同,结果只会是一个布尔值。如果条件为真,则返回True,否则为False;您可以比较任何类型的数据;python对其他语言没有区分equal和absoluteequal的概念,equal是绝对相等,它区分数据类型;类型符号的作用>大于<小于>=大于等于<=小于等于==等于!=Notequaltoprint(1234=='1234')#Falseprint(1234==1234)#True赋值运算符概念给某条数据赋新值除了=之外的其他赋值运算符都是计算在数字运算符的基础上增加了=,使用的方法与原意基本相同。就是用计算出来的结果代替原来的数据,比较两个值是否相同。结果只会是一个布尔值,满足条件就返回。为真,否则为假;python没有其他语言的自增自减概念;typesymbolfunction=赋值+=操作替换-=操作替换*=操作替换/=操作替换//=操作替换%=操作替换**=操作替换#直接赋值var='msr'print(var)#msrvar='hello'print(var)#hello#通过算术运算得到结果,然后替换原来的数据var*=3print(var)#hellohellohellomember该运算符用于容器类数据,查询某个数据是否是一个容器中的元素;返回一个布尔值,如果条件为真则返回True,否则返回False;typesymbol作用于in查询的元素是否在容器中inqueryelementNotinthecontainerString#只有连续的元素,也就是说不支持模糊查询var='YouarethemasterofJava,他是PHP的开发者,我是Python的新手'print('Java的大神'invar)#Trueprint('Python的小白'notinvar)#假字典#字典里只判断key,不判断valuevar={'及时雨':'宋江','玉麒麟':'卢俊义'}print('及时雨'invar)#Trueprint('宋江'invar)#false身份算子的作用是检测两者是否数据在内存中是相同的值,返回boolean值类型符号的作用是相同地址不是不同地址Python的内存优化整型:-5~~正无穷大范围内的数内存地址相同浮点型:非负数内存地址相同布尔型:值内存地址相同复数相同:实数+虚数的格式永不相同容器类型:只有字符串和空tuplearethesameintvar=100strvar='hello'#使用id()函数检查是否是同一个地址res=id(intvar)==id(strvar)print(res)#False#使用恒等运算符res=intvarisstrvarprint(res)#fasle逻辑运算符函数判断运算符两边的布尔值,返回布尔值类型symbol函数特点及逻辑与:两遍中数据为真,返回True,全真为真,一假为假逻辑或:两遍中数据之一为真,返回True,全假为假,allfalseisfalsenotlogicalnot:以下数据true的逻辑值反转为false,false为trueand——逻辑AND运算符的值两次为真,返回true,其他情况返回false#的概率ofbeingtrueislowres=TrueandTrue#Trueres=TrueandFalse#Falseres=FalseandTrue#Falseres=FalseandFalse#Falseor——逻辑AND运算符的值为false两次,返回false,返回truein其他情况#为假的概率很低res=TrueorTrue#Trueres=TrueorFalse#Trueres=FalseorTrue#Trueres=FalseorFalse#Falsenot——逻辑不向左反转,truetofalse,falsetotrueres=notTrue#Falseres=notFalse#True还记得布尔值为假的十种情况吗???00.00jFalse""[]()set(){}None逻辑短路TrueorexpressionFalseandexpression在逻辑表达式中,or的特点是为真则为真,所以Trueor先求出已经有True了,所以or不需要检查后面的数据是true还是false,直接返回前面的true,导致后面的代码不执行,导致逻辑短路False和一样,andisfalsewhenand为false,所以当and前面有false时,就不用再知道后面的数据是true还是false了,直接返回false,造成逻辑短路。#逻辑短路,不会执行后面的打印函数Trueorprint('helloworld')Falseandprint('helloworld')#没有短路Falseorprint('helloworld')Trueandprint('helloworld')逻辑运算符()>not>and>or的优先级与数学运算相同,必须先运算括号内的数据。在多个逻辑运算符的运算中,按照优先级进行计算。0or6andnot9and(1or3)#按照优先级顺序运算,结果为False。按位运算符用于使用二进制补码执行运算。各种符号用&bitwiseand\bitwiseor~bitwisenot^bitwiseXOR<>rightshift&(bitwiseAND)把同数的补码中相同的数字都为真,合并成新的补码数字19:0000...1001115的补码:0000...01111相同的数字均为真且保留:0000...00011=>3print(15&19)|(按位或)数的补码,同一个数位只要有一个为真,就保留并组合成一个新数19的补码:0000...1001115的补码:0000...01111如果其中一个相同数字为真,将保留:0000...11111=>31print(15|19)^(按位异或)在数字的补码中,如果相同数字相同,则返回假,并且如果不同则返回true,并组合成一个新的数字19的补码:0000...1001115的补码:0000..。01111相同数字不同则返回真:0000...11100=>28print(15^19)<<(leftshift)将整数左移,原位加0,左移shift相当于对一个新数做乘法,左移n位,相当于2的补码乘以19的n次方:00010011左移1位:00100110=>38print(19<<1)>>(右移)整个数右移,在原位置加0,溢出消失,组合成新数。右移相当于除法,左移n位相当于除以2的n次方。:00001001=>9print(19>>1)~按位不按位取反,包括符号位。公式:-(n+1)十进制数:19原码:00010011反码:00010011补码:00010011(先求一个数的补码)按位非:11101100(按位非,包括符号位全部取反)补码:11101100(结果还是补码)反码:10010011原码:10010100(按此补码还原原码)十进制数:-20-(19+1)=-20print(~19)运算符总结:运算符类型算术运算符:+-///%*比较运算符:><>=<===!=赋值运算符:=+=-==/=//=%=*=成员运算符:在,不在身份运算符:是,不是逻辑运算符:和,或,不是按位运算符:&|^~<<>>运算符优先级权重小下面,多个运算符混合时:算术>位>比较>恒等>隶属度>逻辑>赋值一元运算符>二元运算符一元运算符:同时只对一个值进行运算,比如bitwiseNOT(~19),LogicalNOT(notTrue)二元运算符:同时操作两个值,大部分都是这样,比如幂运算(2**3),逻辑与(TrueandFalse)算术运算符:幂运算>乘除法>加减位运算符:按位非>左右移位>按BitwiseAND>BitwiseXOR>BitwiseOR逻辑运算符:()>not>and>or赋值运算符:=最小经验这是我的一点经验:写出机器能看懂的代码是行业之门,高质量的代码是行业的标准,人们看得懂的代码才是行业的标杆。优秀的程序员写出的代码看起来会更直观。在编写复杂的计算公式时,要注意使代码尽可能直观,例如使用括号。下面两行表达式给出了相同的结果,但是却给出了截然不同的结果。#你也可以尝试根据运算符的优先级来计算结果res=5+5<<6//3是40andTrueprint(res)res=(5+5)<<(6//3)是40和Trueprint(res)