Python-基本运算符


计算机可以进行的运算有很多种,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,暂只学习算数运算、比较运算、逻辑运算、赋值运算。

1、算数运算

print(10 + 3.1)# 13.1
print(10 - 3)# 7
print(10 / 3)# 结果带小数 3.3333333333333335
print(10 // 3)# 只保留整数部分 3
print(10 % 3) # 取模、取余数 1
print(10 * 3)# 30
print(10 ** 3)# 幂 1000

2、比较运算

a = 20
b = 30
print(a == b) #等于 False
print(a != b) #不等于 True
print(a > b) #大于 False
print(a >=b) #大于等于 False
print(a < b) #小于 True
print(a <= b) #小于等于 True

3、赋值运算

# 原式
a = 1
a = a + 1 # a=2
#通过过赋值运算符简化为
a = 1
a += 1 # a=2
#不止加,乘除减等等都可以(=,+=,—=,*=,/=,%=,**=,//=)
a = 1
a -= 1 # a=0

4、链式赋值

#原式:
x = 10
y = x
z = y
# 链式赋值简化
z = y = x = 10 
print(x, y, z) # 10 10 10
print(id(x), id(y), id(z)) # 2013001792 2013001792 2013001792

5、交叉赋值

m = 10 # 要求交换他俩值
n = 20
#复杂:
temp = m
m = n
n = temp
print(m,n) # 20 10
# 简化:
m,n = n,m # 交叉赋值
print(m,n) # 20 10

6、解压赋值

# 要求把五个月的工资取出来分别赋值给不同的变量名
#没学解压赋值,我们也可以通过索引来实现
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) # 111 222 333
print(_) # [444, 555]

# 其他例子,取后三个值
*_,x,y,z=salaries=[111,222,333,444,555]
print(x,y,z) # 333 444 555
# 中间的案例
x,*_,y,z=salaries=[111,222,333,444,555]
print(x,y,z) # 111 444 555
# 两端都用*
salaries=[111,222,333,444,555]
_,*middle,_=salaries
print(middle) # [222, 333, 444]

# 解压字典默认解压出来的是字典的key
x,y,z=dic={'a':1,'b':2,'c':3}
print(x,y,z) # a b c

7、逻辑运算

就是用not、and、or把条件链接起来进行判断的运算。

7.1 条件

条件就是你事先定义好东西。

age = 20     
# 条件经过判断会得到一个布尔值,条件可以是True,False。
print(age < 22# False

7.2 显性布尔值和隐性布尔值

显性布尔值 : 表面上看判断结果就直接是True或False。

# 比较运算的结果
#一眼就能看出来
print(10 > 3) # Ture
print(10 == 3) # False
# 变量值直接就是True或False
tag = True

隐性布尔值: 所有的值都可以当成条件去用,其中0None(空字符串、空列表、空字典)代表的布尔值为False,其余都为Ture。

7.3 not、and、or的基本使用

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

# not 条件:对条件的结果取反
print(not 10 > 3) # False
print(not False) # Ture
print(not 0) # Ture

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

# 条件1 and 条件2:连接左右两个条件,两个条件必须都为True,最终结果才为True
print(True and 10 > 3) # Ture
print(True and 10 == 3) # False

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

# 条件1 or 条件2:连接左右两个条件,两个条件只要有一个为True,最终结果就为True
print(False or 10 == 3) # False
print(True or 10 == 3) # False

7.4 not、and、or使用优先级

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

# 优先级:not > and > or,推荐用括号去标识优先级
     # False           or          # True
res=(3 > 4 and 4 > 3) or (not (1 == 3 and 'x' == 'x')) or 3 > 3 # True

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

7.5 短路运算

偷懒原则: 逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回,拿单纯or链接的条件举例,在运行第一个条件结果true的话,这行之后的条件就不会再运行了,直接得出结果Ture。

#     这个位置得到True之后的代码都不会再算了
        v
res = True or False or True ........

7.6 特殊案例

#所有数据类型都自带布尔值;
#None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False,其余均为真 。
print(10 and 0) # 0
print(10 and False) # False
print(10 or False) # 10
#上例10自带布尔值Ture,0则为False,这种情况会直接返回值来表示结果

8、身份运算

is与==: is 比较左右两个值身份id是否相等,== 比较左右两个值他们的值是否相等。

name = 'sailan'
name2 = '摔烂'
a = name
print(name is a, name is name2, name == a, name == name2)
#结果:True False True False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值