随笔 - 65  文章 - 0 评论 - 0 阅读 - 28752
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

一. 算数运算符

 

"""在计算机中,因为有存储上限,所以所有的浮点数运算,都是一种近似值的运算,得到结果都是近似值"""
"""因为计算中CPU采用的是二进制,所以实际上数值在内部运算过程中,都会被转换成二进制,才进行运算"""
"""浮点数运算过程中近似值的计算,是不精确的。也叫丢失精度"""
# ret = 7.1+0.8 # print(ret) # 7.8999999999999995 # # # 解决上面的隐患,所以一般要保留精度 # print("%.2f" % ret) # 7.90

二. 赋值运算符

先计算等号=右边的表达式,再赋值给左边变量

复制代码
# -=
# var1 -= var2
'''var1 = var1 - var2'''
# print(var1)

# *=
# var1 *= var2
'''var1 = var1 * var2'''
# print(var1)
复制代码

三. 比较运算符

比较运算符:特殊情况,字符串的比较,实际是编码位置的比较

计算机最终运行的是二进制,所以计算机中本身没有任何中文或字母,我们看到的中文字母,实际是别人提前把文字字母录入到计算机的一个编码文件里提取出来的内容。由于文件中内容录入有先后,所以有数值位置【编码位置】,因此,字符串的比较成了编码位置的比较

复制代码
# > 
var1 = 15
var2 = 18
res = var1 > var2
print(res)
# <
res = var1 < var2
print(res)
# >=  只要满足一个条件即为真
res = var1 >= 15
print(res)
复制代码

四. 成员运算符

仅针对与容器类型,从这点上来说,str也可以算是一种容器类型

listvar = ["xiaoming","xiaobai","xiaohei"]
res = "xiaobai" in listvar
print(res)

tuplevar = "xiaoA","xiaoW","xiaoK","xiaoF"
res = "xiaoA" not in tuplevar
print(res)

五. 身份运算符

仅针对变量的内存地址。

var1 = 56
var2 = 56
res = var1 == var2  # (判断两个值是否相等)
res = var1 is var2  # (判断两个值得地址是否相等)

六. 逻辑运算符

复制代码
# (1)and 逻辑与
'''全真则真,一假则假'''
res = True and True 
res = False and True
res = False and False
res = True and False
print(res)

# (2)or 逻辑或
'''全假则假,一真则真'''
res = True or True
res = True or False
res = False or True
res = False or False
print(res)

# (3)not 逻辑非  相当于取反
res = not True
res = not False
print(res)

  数据转换成bool,除了bool函数,还可以用not

   a=1

   ret=bool(a)

   ret=not not a

复制代码

注意:与其他语言一样,python的逻辑运算符也会有短路现象的出现。

短路:左边的运算结果已经可以让python清晰整个逻辑运算的最终结果了

False amd print("hello"). #逻辑短路现象,输出为空
print(0 and 1) #0
print(0 or 1) #1

七. 位运算符

位(bit),就是位模式,实际就是计算机中的二进制运算。

位(bit):计算机中,采用二进制来进行数据存储的,那么1个二进制数字就是1位(1bit),1byte = 8位。一个字节可以保存的有符号的数字:-127~127

反码:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反

补码:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补

复制代码
# 按位异或 ^ "如果两者不相同,返回真,两者相同返回假
res = var1 ^ var2 print(res) ''' 000000010011 000000001111 000000011100 ''' # << 相当于 5 乘以 2的2次幂 res = 5 << 2 res = 4 << 3 print(res) # 20 """ 000000101 000010100 """ # ~ 按位非 (针对于补码来进行操作 ,连符号位都要改变) 公式 -(n+1) ~9 结果:-10 原码:00001001 反码:11110110 补码:10001001 修正:10001010 1是负,加1修正 转换:-0008020 -> 10 ~-9 结果:8 原码:10001001 反码:01110110 补码:00001001 修正:00001000 0是正,减1修正 转换:+0008000 -> 8
复制代码

八. 运算符优先级问题

在表达式里面,给优先想要运算的表达式加上小括号提升它的优先执行

 

posted on   大明花花  阅读(226)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示