运算符包括算数运算符、比较运算符、赋值运算符、成员运算符、身份运算符、逻辑运算符、位运算符

python运算符 注意点
算数运算符 % 取余 , //地板除 , ** 幂运算
比较运算符 == 比较两个值是否相等 != 比较两个值是否不同
赋值运算符 a += 1 => a = a+1
成员运算符 in 或 not in 判断某个值是否包含在(或不在)一个容器类型数据当中
身份运算符 is 和 is not 用来判断内存地址是否相同
逻辑运算符 优先级 () > not > and > or
位运算符 优先级 (<<或 >> ) > & > ^ > | 

一、算数运算符 + - * / // % **

1、 +、 -、 *、 /

# (1) 算数运算符  + - * / // % **
var1 = 6
var2 = 4
# +
res = var1 + var2
print(res) # -
res = var1 - var2
print(res) # *
res = var1 * var2
print(res) # / 除法 (结果为小数)
res = var1 / var2
res = 10 / 5
print(res) # // 地板除 (返回整数)
res = 10 // 5
res = 11 // 4
print(res) # 如果被除数或者除数是一个小数,结果加上.0
res = 11.0 // 4
print(res)

+、-、*、/

2、取余 %

res = 11 % 4
res = -11 % 4 # -3 + 4 = 1
res = 11 % -4 # 3 + (-4) = -1
res = -11 % -4 # -3(如果被除数和除数都是负数,在正常得到的结果前面填上负号即可.)
print(res) res = -17 % 7 # -3 + 7 = 4
res = 17 % -7 # 3 + (-7) = -4
res = -17 % -7 #-3
print(res)

取余

3、幂运算 **

res = 3 ** 2
res = 3 ** 4
print(res)

幂运算

二、比较运算符  > < >= <= == !=

比较运算符只会差生两种结果: True 真的 ,False 假的

var1 = 100
var2 = 100 res = var1 > var2
res = var1 < var2
res = var1 >= var2
res = var1 <= var2
print(res) # 注意点
res = var1 == var2
print(res) res = var1 != var2
print(res)

比较运算符

三、赋值运算符 = += -= *= /= //= %= **=

1、= += -= *= /=

# = 从右向左,将右侧的值赋值给左侧变量
var1 = 9
var2 = 2 # +=
"""var1 = var1 + var2"""
# var1 += var2
# print(var1) # -=
"""var1 = var1 - var2"""
# var1 -= var2
# print(var1) # *=
"""var1 = var1 * var2"""
# var1 *= var2
# print(var1) # /=
"""var1 = var1 / var2"""
# var1 /= var2
# print(var1)

= += -= *= /=

2、//= %= **=

# //=
"""var1 = var1 // var2"""
# var1 //= var2
# print(var1) # %=
"""var1 = var1 % var2"""
# var1 %= var2
# print(var1) # **=
"""var1 = var1 ** var2"""
var1 **= var2
print(var1)

//= %= **=

四、 成员运算符 in、 not in (针对容器类型数据)

字符串必须是一个连续的片段

strvar = "雷霆嘎巴,无情哈拉少"
res = "雷" in strvar
res = "文" not in strvar
res = "无情" in strvar
res = "霆哈少" in strvar
res = ',' not in strvar
print(res) # list tuple set
lst = ["余锐","高学峰","治理追","温子月","草神光"]
res = "高学峰" in lst
print(res) tup = ("余锐","高学峰","治理追","温子月","草神光")
res = "李博伦" not in tup
print(res) setvar = {"金角大王","银角大王","神秘男孩"}
res = "神秘男孩" in setvar
print(res) # dict
""" in 和 not in 在字典中只判断键,不判断值 """
dic = {"yr":"英俊帅气","bx":"抠脚大汉","mcp":"高大威猛"} res = "英俊帅气" in dic # False
res = "yr" in dic
res = "mcp" not in dic
print(res)

in 和 not in

五、身份运算符 is 和 is not (检测两个数据在内存当中是否是同一个值)

1、整型 -5 ~ 正无穷

var1 = 1000
var2 = 1000
res = var1 is var2
print(res)

整形

2、浮点型 非负数

var1 = -5.78
var2 = -5.78
res = var1 is not var2
print(res)

浮点型 非负数

3、布尔型 只要值相同即可

var1 = True
var2 = True
res = var1 is var2
print(res)

布尔型

4、复数 实数+虚数永远不同 (只有虚数的条件例外)

var1 = 4-90j
var2 = 4-90j
res = var1 is var2
print(res)

复数

5、容器类型

var1 = (1,2,3)
var2 = (1,2,3)
res = var1 is var2
print(res)

容器

六、逻辑运算符 and or not

1、and 逻辑与

"""全真则真,一假则假"""
res = True and True # True
res = True and False # False
res = False and True # False
res = False and False # False
print(res)

and

2、 or 逻辑或

"""全假则假,一真则真"""
res = True or True # True
res = True or False # True
res = False or True # True
res = False or False # False
print(res)

or

3、 not 逻辑非

"""真变假,假变真"""
res = not True
res = not False
print(res)

not

4、逻辑短路

如果出现了短路效果,后面的代码不执行

"""
短路:
(1) True or 表达式
(2) False and 表达式
"""
"""
True or print("紫月真胖呀")
True or True => True
True or False => True False and print("紫月真猛呀")
False and False => False
False and True => False
""" """
bool 类型为假的十种情况
0 0.0 0j False '' [] () {} set() None
先用大脑算一下布尔值真假,是否出现短路情况
如果出现了直接返回当前值,没出现,继续向右执行;
""" res = 5 or 6
res = 0 or 6
res = 0 and 9
print(res)

逻辑短路

5、逻辑运算符的优先级

() > not > and > or

res = 5 or 6 and 7 # 5 or 7 => 5
res = (5 or 6) and 7 # 5 and 7 => 7
res = not(5 or 6) and 7 # not 5 and 7 => False and 7 =>False
print(res) res = 1>2 or 3<4 and 5>10 or 11<12 and 13>15 or 100<1000 and 1<2
# res = False or True and False or True and False or True and True
# res = False or False or False or True
# res = False or False or True
# res = False or True
# res = True
print(res)

优先级

七、位运算符

1、按位与 &

var1 = 19
var2 = 15
print(var1 & var2)
"""
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111 0000 ... 10011
0000 ... 01111
0000 ... 00011 => 3
"""

&

2、按位或 |

var1 = 19
var2 = 15
print(var1 | var2)
"""
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111 0000 ... 10011
0000 ... 01111
0000 ... 11111 => 31
"""

|

3、按位异或 ^ 两个值不一样,返回真,否则返回假

"""
1 0 => 1
1 1 => 0
0 0 => 0
0 1 => 1
"""
var1 = 19
var2 = 15
print(var1 ^ var2)
"""
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111 0000 ... 10011
0000 ... 01111
0000 ... 11100 => 28
"""

^

4、<< 左移

""" 左移相当于做乘法 : 5 * 2的n次幂 """
res = 5 << 1 #
res = 5 << 2 #
res = 5 << 3 #
print(res)
"""
0000 ... 101
0000 ... 1010 移动一位 10
0000 10100 移动二位 20
"""

<<

5、 >> 右移

""" 右移相当于做除法 : 5 // 2的n次幂 """
res = 5 >> 1 #
res = 5 >> 2 #
res = 5 >> 3 #
print(res)
"""
0000 ... 101
0000 ... 010 移动一位 2
0000 ... 001 移动二位 1
0000 ... 000 移动三位 0
"""

>>

6、 ~ 按位非 (针对于补码进行操作,按位取反,包括符号位)

"""公式: -(n+1)"""
var1 = ~19
print(var1)
"""
~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反. 原码:0000 ... 10011
反码:0000 ... 10011
补码:0000 ... 10011 补码: 0000 ... 10011
按位非: 1111 ... 01100 给你补码求原码:
补码: 1111 ... 01100
反码: 1000 ... 10011
原码: 1000 ... 10100 => -20
""" var1 = ~(-22)
print(var1)
"""
原码: 1000 ... 10011
反码: 1111 ... 01100
补码: 1111 ... 01101 补码: 1111 ... 01101
按位非: 0000 ... 10010 给你补码求原码:
正数 : 补码 = 反码 = 原码 原码: 0000 ... 10010 => 18
"""

~

7、运算符总结

 """
(1) 个别运算符:
优先级最高 ** 幂运算
优先级最低 = 赋值运算符
() 括号可以提升运算优先级 (2) 整体 一元运算符 > 二元运算符
一元运算符: 同一时间,只操作一个值 - ~
二元运算符: 同一时间,操作两个值 + - * / ... (3) 同一层级
逻辑: () > not > and > or
算数: 乘除 > 加减
位运算符: ( << >> ) > & > ^ > | (4) 其他运算符
算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
赋值运算符是最后算完进行赋值,做收尾工作的.
"""
res = 5+5 << 6//3 is 40 and True
print(res) """
res = 10 << 2 is 40 and True
res = 40 is 40 and True
res = True and True
res = True
"""
# 加上括号包起来,让别人能看懂代码;
res = (5+5) << (6//3) is 40 and True

day4. 运算符的更多相关文章

  1. Python--Day2/Day3/Day4(运算符、数据类型及内建函数)

    一.昨日内容回顾 Python种类:CPython(Python).JPython.IronPython.PyPy 编码: Unicode.UTF-8.GBK while循环 if...elif... ...

  2. day4:运算符

    1.算术运算符:+ - * / // % ** 注意点:1./ 除法,结果为小数  2.// 地板除,返回整数  3.如果被除数或者除数是一个小数,结果加上.0 2.比较运算符:< > & ...

  3. day4 python 运算符

    python运算符 1.算数运算符( + - * / // % ** ) # + - * / // % ** # 加 减 乘 除 整除 余数 幂 ​ #注意 #1. / 得到浮点型, // 得看被除数 ...

  4. 【JAVA零基础入门系列】Day4 变量与常量

    这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...

  5. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  6. shell运算符

    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. #!/bin/bash v ...

  7. SQL Server-聚焦APPLY运算符(二十七)

    前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...

  8. java中的移位运算符:<<,>>,>>>总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  9. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

随机推荐

  1. List集合的遍历方式

    遍历List集合的三种方法 List list = new ArrayList(); list.add("aaa"); list.add("bbb"); lis ...

  2. 一篇文章教会你如何将DOM转换为virtual DOM

    [一.Virtual DOM简介] Virtual DOM是虚拟节点,它通过Javascript的Object对象模拟DOM中的节点,然后通过特定的render方法将其渲染成真实的DOM节点. 浏览器 ...

  3. 午间邂逅 | post 和 get 的兄弟情深

    前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 Github 博客 学习导图: image-20200710142453734 image-202007101431049 ...

  4. Java加密与安全

    数据安全   什么是数据安全?假如Bob要给Alice发送一封邮件,在发送邮件的过程中,黑客可能会窃取到邮件的内容,所以我们需要防窃听:黑客也有可能会篡改邮件的内容,所以Alice必须要有能有去识别邮 ...

  5. VirtualBox安装centos8

    原文链接:https://www.wjcms.net/archives/vagrantbox安装centos8 VirtualBox安装centos8 在线安装(不推荐) 打开git软件,直接运行命令 ...

  6. redis(十七):Redis 安装,部署(WINDOWS环境下)

    1.下载Redis安装文件, 我选择的是 3.0.504 版本,有zip或msi可供下载.   2.解压缩后,打开安装目录 双击redis-server.exe启动redis服务器,双击redis-c ...

  7. 数据可视化之分析篇(五)如何使用Power BI计算新客户数量?

    https://zhuanlan.zhihu.com/p/65119988 每个企业的经营活动都是围绕着客户而开展的,在服务好老客户的同时,不断开拓新客户是每个企业的经营目标之一. 开拓新客户必然要付 ...

  8. GPO - General GPO Settings(2)

    Creating local folders and copying files  Mapping printers via GPO Deny logon locally.  Installation ...

  9. Oracle版本发布规划 (文档 ID 742060.1)

    Oracle Database Release Schedule of Current Database Releases (文档 ID 742060.1) Oracle Database RoadM ...

  10. 使用PowerShell自动编译部署前端

    前言 最近在开发一套管理系统,做了前后端分离. 后台使用的是Asp.Net Core 3.1 前端使用的是Vue+Ant Design 自己搞了一台云服务器,打算把系统部署到云服务器上.以供外网访问. ...