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.0b=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

posted @ 2020-02-27 15:07  耗油炒白菜  阅读(884)  评论(0编辑  收藏  举报