Day2-3运算符

运算符

前面我们所说进行数据类型转换的原因是不同类型的数据,它们的运算方式不同,那么下面我们来介绍数据之间运算所用的符号。

算数运算符

算数运算符主要就是我们数学上常用的一些符号,有加号+,减号-,乘号*,除号/,整除//,取余(取模)%,幂运算**

a = 5
b = 3
print(a+b) # 8
print(a-b) # 2
print(a*b) # 15
print(a/b) # 1.66666667
c = 6
d = 3
print(c/d) # 2.0 
# python3中,两个整数相除,得到的结果会是一个浮点数
print(a//b)# 1  //表示取整数部分,向下取整
print(-5//2)# -3
print(a%b) # 2  %表示取余数部分
print(a**b)#125 表示5的3次方
x = 16
print(16**(1/2)) # 4.0

( ) 里的内容代表运算优先级

不同类型的数字在进行混合运算时,整数将会转换成浮点数进行。

print(5**2/5) # 5.0

算数运算符在字符串里的使用

# 使用加号用来拼接两个字符串
print('hello'+'world')  # helloworld
# 使用乘号用来重复字符串
print('hello'*5)  # hellohellohellohellohello   

在python中,字符串和数字之间不能使用加号连接

赋值运算符

赋值运算符就是=,但是不同于数学中的等号,计算机编程的=是将等号右边的值赋给等号左边,等号的左边一定不能是常量或者表达式

1 = b # 报错
b = 1 
print(b)
x = 1
x = x+1 # 先把1赋给x,然后x+1再赋给x,x现在的值为2
print(x)# 2

# 复合赋值运算符
y = 1
y +=1 # 和上述等价,表示先把1赋给y,然后y+1再赋给y,y现在的值为2
print(y) # 2
y -=1
print(y)# 1
y *=2
print(y)# 2
y /=1
print(y) # 2.0
y **=3
print(y)# 8.0
y //=3
print(y) #2.0
y %=2
print(y) # 0.0

赋值运算符的特殊场景

# 等号连接的变量可以传递赋值
a = b = c = d = 'hello'
print(a,b,c,d)
m,n = 3,5 # 拆包
print(m,n)
x = 'hello','good','yes'
print(x)
#  拆包时,变量的个数和值的个数不一致时,会报错。
y,z = 1,2,3,4,5
o,p,q = 1,2
# *表示可变长度
o,*p,q = 1,2,3,4,5
print(o,p,q) # 1 [2, 3, 4] 5

比较运算符

比较运算符有大于>,小于<,大于等于>=,小于等于<=,不等于!=,等等==

print(2>1) # True
print(4>9) # False
print(5!=6) # True
print(6==6) # True

比较运算符在字符串里的应用

字符串之间使用比较运算符,会根据各个字符的编码值逐一比较。ASCII码表。

print('a'>'b') # False
print('abc'>'b') # False
print('a'==6) # False
print('a'!=6)# True

数字和字符串作==运算时结果为False,作!=运算时结果为True,其余运算会报错。

在这里插入图片描述

逻辑运算符

逻辑与and,逻辑或or,逻辑非not

print(2>1 and 3>4) # False
print(2>1 or 3>4)  # True
print(not(2<4))    # False

逻辑运算符的短路

# 逻辑与运算的短路问题
4>3 and print('hello') # hello
4<3 and print('hello') # 没有结果
# 逻辑或运算的短路问题
4>3 or print('hello') # 没有结果
4<3 or print('hello') # hello

使用逻辑运算符得到的结果一定是布尔值吗,不一定!

逻辑运算符可以做取值。

# 逻辑与and运算中,会取第一个为False的值
print('hello' and [] and 'kdy') # []
# 如果所有的值均为True,那么取最后一个值
print('hello' and 'kdy' and 'daizi') # daizi
# 逻辑或or运算中,会取第一个值为True的值
print('' or '家家' or 'hello') # 家家
# 当所有的值都是False,那么会取最后一个值
print('' or [] or {}) # {}

位运算符

将数字转化成二进制进行运算。

按位与& :同为1则为1,否则为0

按位或|:有1为1,没有1则为0

按位异或^:相同为0,不相同为1

按位左移<<:向左移几位,就在后面补几个0

按位右移>>:向右移几位,末尾就去掉几位数

a = 23
b = 15
print(bin(a)) # 0b10111
print(bin(b)) # 0b1111
print(a & b)  # 0b111→7
print(a | b)  # 0b11111→31
print(a ^ b)  # 0b11000→24
x = 3         # 0b11
print(x<<3)   # 0b11000→24
y = 13        # 0b1101
print(y>>2)   # 0b11→3

十进制的数x,左移n位后为x×2的n次方,例如上面3左移3位后得24,3×2的三次方为24。
十进制的数x,右移n位后为x/2的n次方,例如上述13右移2位后得3,13/2的2次方为3。

练习

使用位运算,获取到十六进制颜色 0xF0384E 的RGB值,以十进制形式打印输出。

color = 0xF0384E
red = color >> 16
print(red)
green = color >> 8 & 0xFF
print(green)
blue = color & 0xFF
print(blue)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值