文章目录
运算符
1.算术运算符 ( + - * / % // / )
python2 vs python3
1.python2中有整型和长整型 ,python3中只有整型
2.python2中没有f标志位格式化
–》 3.python2中整数相除属于地板除,要想 真除 得变成 浮点数 ,python3中除属于真除
// => 取整除:a/b得到的结果进行取整
% => 模 - -》取余数:a/b得到余数
# 算术运算符 (+、-、*、/、//、 %)
a = 10
b = 20
print("a+b=", a+b)
print("a-b=", a-b)
print("a*b=", a*b)
print("a/b=", a/b)
# // => 取整除:a/b得到的结果进行取整
print("a//b=", a//b)
# % => 模 - 取余数:a/b得到余数
print("a%b=", a%b)
a+b= 30
a-b= -10
a*b= 200
a/b= 0.5
a//b= 0
a%b= 10
2.赋值运算符
# 赋值运算符
a = 1
a += 1 # a=a+1
print("a += 1", a)
a -= 1 # a=a-1
print("a -= 1", a)
# print("a -= 1", a+=1)==>错误的
# 参数中不能有赋值运算的
a += 1 2
a -= 1 1
3.比较运算符
# 比较运算符 => 结果: bool值
a = 100
b = 200
print("a>b:", a>b)
print("a<b:", a<b)
a>b: False
a<b: True
4.逻辑运算符 (and or not)
逻辑运算符 => 取结果: bool
=> 实际返回:根据运算顺序返回表达式的结果
短路运算
对于包含了 and or not的表达式, 从左往右计算,但是会有短路运算规则
若 or左侧表达式为True,则短路后面所有的表达式(不管是and还是or)
若and左侧表达式为False,则短路后面
4.1 and
a and b: 如果a的bool为True,且b的bool为True => True
运算顺序
-
计算a表达式的结果,如果a表达式结果bool为False,直接返回a表达式的结果
-
计算a表达式的结果,如果a表达式结果bool为True,计算表达式b的结果并返回b表达式的结果
a and b and c and d
从左往右计算,计算表达式的布尔值为True继续向后计算,
表达式的布尔值为False直接返回表达式的结果
#让c等于a,b中较大的数
c = a >b and a or b
print("10 and 0:", 10 and 0) # 0 ==》false
print(0 and 10) # 0 ==》false
print(10+10 and 10) # 10 ==》True
print(10+10 and None) # None ==》False
4.2 or
a or b : 如果a或b任意一个表达式bool值为True,表达式bool值结果为True
运算顺序
-
计算a表达式的结果,如果a表达式结果bool为True,直接a表达式的结果
-
计算a表达式的结果,如果a表达式结果bool为False,计算表达式b的结果并返回b表达式的结果
a or b or c or d
从左往右计算,计算表达式的布尔值为False继续向后计算,
表达式的布尔值为True直接返回表达式的结果
print(20 or 10) #20 ==》true
print(None or 10) #10 ==》 true
4.3 not
not a =>只有两个结果=>True 或 False
# 非运算
print(not 10) # False
print(not None) # True
练习
1.请写出条件"20<x<30或x<-100"的Python表达式
# 20<x<30 or x<-100
2.设有一个int型的y,请写出描述"y为奇数的表达式"
# y%2 == 1
# y%2 != 0
3.从健盘接收商品单价及数量,计算出价格
price = int(input("请输入商品的单价:"))
num = int(input("请输入商品的数量:"))
print(f"价格为:{price*num}")
5.成员关系运算符(in not in)
# 成员关系运算符 in , not in # => True / False
# 是否包含(字符串、[列表、元组、字典] => 容器类型)
mystr = "2022/03/26"
print('2022' in mystr) # true
print('2022' not in mystr) # false
6.对象实例测试(is not is)
# 对象实例测试
# is,not is => 判断两个对象是不是同一个对象(同一块内存区域)
# 比较id,
# is => id(a) == id(b)
# not is => id(a) != id(b)
7.位运算
将数字转换为二进制再进行运算
# & => 按位与 => 同为1结果为1,否则为0
a = 2 # 0b10
b = 3 # 0b11
print(a & b) # 0b10 =>2
# | => 按位或 => 任意一个为1结果为1,否则为0
a = 4 # 0b100
b = 5 # 0b101
print(a | b) # 0b101 =>5
# ^ => 按位异或 => 两位相同结果为0,不相同结果为1
a = 4 # 0b100
b = 5 # 0b101
print(a ^ b) # 0b1 =>1
# ~ 按位取反
a = 1
print(~a) ~a=-a-1
# 左移运算<< 右移运算 >>
# 将数据变成2进制
# 0b10 << 2 => 0b1000
# 0b1010 >> 2 => 0b10
8.一元运算(+a -a ~a)
9.运算符优先级
# 当对于运算优先级不确认,可以使用()优先级提高
print((-4)**2)
print(-4**2)
~a=-a-1
# 左移运算<< 右移运算 >>
# 将数据变成2进制
# 0b10 << 2 => 0b1000
# 0b1010 >> 2 => 0b10