运算符是程序中执行各种计算的符号掌握它们是编程的基础。目录算术运算符比较运算符逻辑运算符赋值运算符位运算符成员运算符身份运算符运算符优先级算术运算符基本算术运算a,b10,3print(ab)# 13 加法print(a-b)# 7 减法print(a*b)# 30 乘法print(a/b)# 3.333... 除法返回浮点数print(a//b)# 3 整除返回整数print(a%b)# 1 取余print(a**b)# 1000 幂运算运算符优先级# 先乘除后加减result103*5# 25不是 65# 使用括号改变优先级result(103)*5# 65# 幂运算优先级最高result2**3*5# 40不是 2 ** (3 * 5) 32768比较运算符基本比较a,b10,20print(ab)# False 等于print(a!b)# True 不等于print(ab)# True 小于print(ab)# False 大于print(ab)# True 小于等于print(ab)# False 大于等于字符串比较# 字符串按字典序比较print(applebanana)# Trueprint(Pythonpython)# False区分大小写print(ABCabc)# True大写字母的 ASCII 值更小链式比较age25# 相当于 18 age and age 60print(18age60)# True# 相当于 age 18 or age 60print(not(18age60))# False逻辑运算符基本逻辑运算a,bTrue,Falseprint(aandb)# False 逻辑与两者都为 Trueprint(aorb)# True 逻辑或至少一个为 Trueprint(nota)# False 逻辑非取反短路求值# and 短路第一个为 False不再计算第二个xFalseand(10/0)# 不会报错因为短路了print(x)# False# or 短路第一个为 True不再计算第二个xTrueor(10/0)# 不会报错print(x)# True实用技巧# 使用 or 提供默认值nameinput(请输入姓名)or匿名print(f你好{name})# 使用 and 简化条件判断# 以下两种写法等价ifage18:print(成年人)age18andprint(成年人)赋值运算符基本赋值x10x20# 重新赋值复合赋值运算符x10x5# x x 5 15x-3# x x - 3 12x*2# x x * 2 24x/4# x x / 4 6.0x//3# x x // 3 2x%3# x x % 3 2x**2# x x ** 2 4多重赋值# 同时赋值多个变量a,b,c10,20,30print(a,b,c)# 10 20 30# 交换变量值Python 独有x,y10,20x,yy,xprint(x,y)# 20 10# 解包赋值numbers[1,2,3]a,b,cnumbersprint(a,b,c)# 1 2 3位运算符基本位运算a,b10,6# 10 1010# 6 0110print(ab)# 2 按位与 (0010)print(a|b)# 14 按位或 (1110)print(a^b)# 12 按位异或 (1100)print(~a)# -11 按位取反print(a2)# 40 左移两位相当于乘以 4print(a2)# 2 右移两位相当于整除以 4位运算应用# 判断奇偶num15is_oddnum1# 结果为 1 表示奇数0 表示偶数print(is_odd)# 1# 快速交换a,b10,20a^b b^a a^bprint(a,b)# 20 10# 判断是否为 2 的幂num16is_power_of_twonum0and(num(num-1))0print(is_power_of_two)# True成员运算符in 和 not in# 列表成员numbers[1,2,3,4,5]print(3innumbers)# Trueprint(6notinnumbers)# True# 字符串成员textHello Worldprint(Hellointext)# Trueprint(pythonintext)# False# 字典成员检查键person{name:张三,age:25}print(nameinperson)# Trueprint(张三inperson)# False身份运算符is 和 is nota10b10c[1,2,3]d[1,2,3]# 对于小整数Python 会缓存print(aisb)# True相同对象# 对于列表即使内容相同也是不同对象print(cisd)# False不同对象print(cd)# True内容相同# None 判断resultNoneprint(resultisNone)# True推荐写法print(resultNone)# True不推荐id() 函数# 查看对象的内存地址a10print(id(a))# 140234567890000b10print(id(b))# 与 a 相同c105print(id(c))# 可能不同运算符优先级优先级表从高到低优先级运算符描述1**幂运算2~,,-按位取反、正负号3*,/,//,%乘、除、整除、取余4,-加、减5,位左移、位右移6按位与7^按位异或8|按位或9in,not in,is,is not,,,,,,,!比较、身份、成员10not逻辑非11and逻辑与12or逻辑或13,,-等赋值优先级示例# 示例 1result2**35*2# 计算顺序2**38, 5*210, 81018print(result)# 18# 示例 2result102015and53# 计算顺序102030, 3015True, 53False, True and FalseFalseprint(result)# False# 示例 3使用括号明确优先级result(1020)*(5-2)print(result)# 90实战练习练习 1计算器编写一个计算器程序支持加减乘除和幂运算。# TODO: 编写代码练习 2判断闰年使用运算符判断给定的年份是否为闰年。# TODO: 编写代码练习 3成绩评级根据分数输出成绩等级A、B、C、D、E。# TODO: 编写代码本节小结本节我们学习了算术运算符的使用和优先级比较运算符和链式比较逻辑运算符和短路求值赋值运算符和多重赋值位运算符及其应用成员运算符 in 和 not in身份运算符 is 和 is not运算符的优先级规则下一节我们将学习分支结构掌握程序的条件判断逻辑。继续学习分支结构if-else 与 match-case