Python数值运算
算术运算
a=10
b=2
+ |
加-两个对象相加 |
a+b输出结果12 |
- |
减-得到负数或是一个数减去另一个数 |
a - b输出结果8 |
* |
乘-两个数相乘或是返回一个被重复若干次的字符串 |
a * b输出结果20 |
/ |
a除以b |
a/b输出结果5.0 |
// |
取整除-返回商的整数部分(向下取整) |
a//b输出结果5 |
% |
取模-返回除法的余数 |
a%b输出结果0 |
** |
幂-返回x的y次幂 |
a**b输出结果100 |
//注意:
如果a=10.0;b=2.0;那么a//b的结果就为5.0
//代码 a=10.0 b=2.0 print("a+b=",a+b) print("a-b=",a-b) print("a*b=",a*b) print("a/b=",a/b) print("a//b=",a//b) print("a%b=",a%b) print("a**b=",a**b) //运行结果 a+b= 12.0 a-b= 8.0 a*b= 20.0 a/b= 5.0 a//b= 5.0 a%b= 0.0 a**b= 100.0
比较运算:
赋值运算:
//增量赋值
egon_age=18 for i in range(3): egon_age+=1 print("三年后岁数",egon_age)
//链式赋值
#x=10 #y=x #z=y z = y = x = 10 # 链式赋值(等于上面三行命令) print(x, y, z) print(id(x), id(y), id(z))
//交叉赋值
m=10 n=20 # print(m,n) # 交换值 # temp=m # m=n # n=temp # print(m,n) m,n=n,m # 交叉赋值(等于上面注释的代码) print(m,n)
//解压赋值
//代码 salaries=[33,22,11,55,44] a,b,c,*_=salaries #取前三个值,*_中*表示除a,b,c的所有值,_表示占位符(约定俗成) print(a,b,c,abc) //执行结果 33 22 11 [55, 44] //代码 salaries=[33,22,11,55,44] *_,a,b,c=salaries #取后三个值 print(a,b,c) //执行结果 11 55 44 //代码 salaries=[33,22,11,55,44] a,b,c,*_,m=salaries #取前三个值和最后一个值 print(a,b,c,m) //执行结果 33 22 11 44
逻辑运算:
python短路运算
print(10 and 12) =>12
print(True and 10 > 3 and 4 ) #4
//连续多个and
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
>>> 2 > 1 and 1 != 1 and True and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False False
//连续多个or
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
>>> 2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True True
//优先级not>and>or
#1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。 >>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3 False #2、最好使用括号来区别优先级,其实意义与上面的一样 ''' 原理为: (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割 (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可 (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算 ''' >>> (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3 False #3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回 >>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4 我们用括号来明确一下优先级 >>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4 短路: 0 '' 'abc' 假 假 真 返回: 'abc' #4、短路运算面试题: >>> 1 or 3 1 >>> 1 and 3 3 >>> 0 and 2 and 1 0 >>> 0 and 2 or 1 1 >>> 0 and 2 or 1 or 4 1 >>> 0 or False and 1 False
成员运算:
身份运算:
位运算:
该运算符按二进制位对值进行操作
1、与(&),按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
2、或(|),按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1
3、异或(^),按位异或运算符:当两对应的二进位相异时,结果为1
4、取反(~),按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1
5、左位移(<<),运算数的各二进位全部左移若干位,由<<右边的数字指定了移动的位数,高位丢弃,低位补0
6、右位移(>>),把‘>>’左边的运算数的各二进制位全部右移若干位,>>右边的数字指定了移动的位数
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下,下表中变量 a 为 60,b 为 13,二进制格式如下:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
运算符优先级:
优先级:not > and > or