Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。

运算符 描述
[] [:] 下标,切片
** 指数
~ + - 按位取反, 正负号
* / % // 乘,除,取余,取整
+ - 加,减
>> << 右移,左移
& 按位与
^ `\ ` 按位异或,按位或
<= < > >= 小于等于,小于,大于,大于等于
== != 等于,不等于
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
= += -= *= /= %= //= **= &= ` =`^= >>= <<= (复合)赋值运算符

下面的例子演示了赋值运算符和复合赋值运算符的使用。

  1. a = 10
  2. b = 3
  3. a += b # 相当于:a = a + b
  4. a *= a + 2 # 相当于:a = a * (a + 2)
  5. print(a) # 想想这里会输出什么

下面的例子演示了比较运算符(关系运算符)、逻辑运算符和身份运算符的使用。

  1. flag0 = 1 == 1
  2. flag1 = 3 > 2
  3. flag2 = 2 < 1
  4. flag3 = flag1 and flag2
  5. flag4 = flag1 or flag2
  6. flag5 = not (1 != 2)
  7. print('flag0 =', flag0) # flag0 = True
  8. print('flag1 =', flag1) # flag1 = True
  9. print('flag2 =', flag2) # flag2 = False
  10. print('flag3 =', flag3) # flag3 = False
  11. print('flag4 =', flag4) # flag4 = True
  12. print('flag5 =', flag5) # flag5 = False
  13. print(flag1 is True) # True
  14. print(flag2 is not False) # False

练习:输入年份判断是不是闰年

闰年说明:四年一闰,百年不闰,400年再闰

  1. year = int(input('请输入年份:'))
  2. is_leap = (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
  3. print(is_leap)

Note

  • and 、or 和not同时存在的时候,先算括号,再算not,然后算and,最后算or
  • or两个为假才是假,and两个为真才是真

and和or左右两边数字的取值

Note x和y分别代表的是运算符左右两边的值, or中出现0时,不能取0, 如果没有0,取左边的值,and中出现0时必须取0,如果没有0,则取右边的值。True在python中相当于1,False相当于0。

  1. print(0 or 1)
  2. print(1 or 2)
  3. print(2 or 3)
  4. print(3 or 4)
  5. print(4 or 5)
  6. print(5 or 6)
  7. print(6 or 7)
  8. # or 左右两边的数字如果为x、y,如果x==0, 则取y值,如果x!=0, 则取x值
  9. #结果为:
  10. #1、2、3、4、5、6
  11. print(0 and 1)
  12. print(2 and 3)
  13. print(3 and 4)
  14. print(4 and 5)
  15. print(5 and 6)
  16. print(6 and 7)
  17. # and 左右两边数字如果为x、y, 如果x==0, 则取x, 如果x!=0,则取y值
  18. # 结果为:0、3、4、5、6、7
  19. print(1 or 0 or 3 or 0 or 5)
  20. # 结果为1
  21. print(2>3 and 5)
  22. # 结果为false