python运算符

2 运算符

2.1算数运算符

print(10 + 3.1)
print(10 + 3)
print(10 / 3) # 结果带小数
print(10 // 3) # 只保留整数部分
print(10 % 3) # 取模、取余数
print(10 ** 3) # 取模、取余数

2.2比较运算符

、>=、<、<=、==、!=

print(10 > 3)
print(10 == 10)

print(10 >= 10)
print(10 >= 3)

name=input('your name: ')
print(name == 'egon')

2.3赋值运算符

变量的赋值
增量赋值:

age = 18
age += 1  # age=age + 1
print(age)

age*=3

链式赋值

x=10
y=x
z=y
z = y = x = 10 # 链式赋值
print(x, y, z)
print(id(x), id(y), id(z))

2.4 交叉赋值

m=10
n=20
temp=m
m=n
n=temp
print(m,n)

m,n=n,m # 交叉赋值
print(m,n)

2.5 解压赋值

把五个月的工资取出来分别赋值给不同的变量名

salaries=[111,222,333,444,555]
mon0=salaries[0]
mon1=salaries[1]
mon2=salaries[2]
mon3=salaries[3]
mon4=salaries[4]
mon0,mon1,mon2,mon3,mon4=salaries
print(mon0)
print(mon1)
print(mon2)
print(mon3)
print(mon4)

这样取值太麻烦,如下面解压赋值

mon0,mon1,mon2,mon3=salaries # 对应的变量名少一个不行
mon0,mon1,mon2,mon3,mon4,mon5=salaries # 对应的变量名多一个也不行

引入,可以帮助我们取两头的值,无法取中间的值
取前三个值
x,y,z,
=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为
print(x,y,z)
print(_)

取后三个值

*_,x,y,z=salaries=[111,222,333,444,555]
print(x,y,z)

x,*_,y,z=salaries=[111,222,333,444,555]
print(x,y,z)

解压字典默认解压出来的是字典的key

x,y,z=dic={'a':1,'b':2,'c':3}
print(x,y,z)

2.6 可变和不可变类型

可变类型:值改变,id不变,证明改的是原值,证明原值是可以被改变的
不可变类型:值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原值是不可以被修改的

# int型:不可变
x=10
print(id(x))
x=11 # 产生新值
print(id(x)

# float型:不可变
x=3.1
print(id(x))
x=3.2
print(id(x))

# str是不可变类型
x="abc"
print(id(x))
x='gggg'
print(id(x))

# list是可变类型
l=['aaa','bbb','ccc']
print(id(l))
l[0]='AAA'
print(l)
print(id(l))


# dict
dic={'k1':111,'k2':222}
print(id(dic))
dic['k1']=3333333333
# print(dic)
print(id(dic))

#bool不可变
关于字典补充:
定义:{}内用逗号分隔开多key:value,
          其中value可以是任意类型
          但是key必须是不可变类型

dic={
    'k1':111,
    'k2':3.1,
    'k3':[333,],
    'k4':{'name':'egon'}
}

dic={
    2222:111,
    3.3:3.1,
    'k3':[333,],
    'k4':{'name':'egon'}
}
print(dic[3.3])

dic={[1,2,3]:33333333}
dic={{'a':1}:33333333}

2.7条件运算符

条件可以是:比较运算符

age = 18
print(age > 16)  # 条件判断之后会得到一个布尔值

条件可以是:True、False

is_beautiful=True
print(is_beautiful)

第二大类:隐式布尔值,所有的值都可以当成条件去用
其中0、None、空(空字符串、空列表、空字典)=》代表的布尔值为False,其余都为真

2.8逻辑运算

not:就是把紧跟其后的那个条件结果取反
ps:not与紧跟其后的那个条件是一个不可分割的整体

print(not 16 > 13)
print(not True)

and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真

print(True and 10 > 3)
print(True and 10 > 3 and 10 and 0) # 条件全为真,最终结果才为True
print( 10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3)  # 偷懒原则

or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True,
两个条件都为False的情况下,最终结果才为False

print(3 > 2 or 0)
print(3 > 4 or False or 3 != 2 or 3 > 2 or True) # 偷懒原则

ps:优先级not>and>or
ps:
如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺讯依次运算即可(偷懒原则)
如果是混用,则需要考虑优先级了

res=3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3 >3
print(res)

2.9 成员运算符

print("egon" in "hello egon") # 判断一个字符串是否存在于一个大字符串中
print(111 in [111,222,33]) # 判断元素是否存在于列表

判断key是否存在于字典
print(111 in {"k1":111,'k2':222})
print("k1" in {"k1":111,'k2':222})

not in
print("egon" not in "hello egon") # 推荐使用
print(not "egon" in "hello egon") # 逻辑同上,但语义不明确,不推荐

2.10 身份运算符 身份运算符

is # 判断的是id是否相等

posted @ 2020-03-06 16:50  小子,你摊上事了  阅读(269)  评论(0)    收藏  举报