当前位置: 首页 > news >正文

萌新学 Python 之运算符

Python 中运算符包括:算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符、海象运算符

算术运算符:加 +   减 -   乘 *   除 /   取整 //   求余 %   求幂 **

注意:取整时,一正一负整除,向下取整

比如 5 // -2 实际上是 -2.5 向下取整,结果为 -3

比较运算符:

大于 >   小于 <   大于等于 >=   小于等于 <=   等于 ==   不等于 !=   in 集合   is(比较的是内存地址)

比较运算符返回的是布尔值 True、False

比如用 is 判断相同字符串内存地址是否相同,先给字符串赋值到某地址,再从某地址中找到该字符串,所以是相等的

逻辑运算符:not 非、and 与、or 或

and:当多个条件同时 True 时,结果为 True,否则为 False

or:当多个条件同时False 时,结果为 False,否则为 True

not:条件为 True,结果为 False,反之,条件为 False,结果为 True

注意:优先级 not > and > or

赋值运算符:用于变量赋值

1.简单赋值,直接使用等号,比如 name = 'zhangsan'

2.算术赋值:+=   -=   *=   /=   //=   %=   **=

先进行算术运算,再进行赋值

链式赋值:赋值后,变量的内存地址是相同的,可变数据类型和不可变数据类型一样

a = b = c = 1   # 链式赋值
print(a is c, id(a), id(b))    # Truelist1 = [1, 2, 3]   # 可变数据类型,值相同,内存地址不同
list2 = [1, 2, 3]
print(list1 is list2, id(list1), id(list2))    # Falsex = y = [1, 2, 3]     # 链式赋值
print(x is y, id(x), id(y))     # True

结果如下:

解包赋值:经常用在变量交换

a, b = 1, 2     # a = 1, b = 2
a, b = b, a     # a = b = 2, b = a = 1   变量交换
print(a, b)     # a = 2, b = 1

位运算:把数值转为二进制进行计算

先进行位运算,再进行赋值

位赋值:>>= 按位右移     <<= 按位左移     &= 按位与     |= 按位或     ^= 按位异     ~ 按位非

>> 按位右移,低位舍去,高位补零

<< 按位左移,低位补零,高位保留

(先转成二进制)

# 右移两位
print(10 >> 2)    # 1010 -> 0010(末尾两位1和0舍去,前面两位补零)  结果为2
# 左移两位
print(10 << 2)    # 1010 -> 101000(末尾两位补零,前面不变)  结果为40

& 按位与:同时为 1,返回 1,否则返回 0

| 按位或:同时为 0,返回 0,否则返回 1

^ 按位异:位的值不同返回 1,否则返回 0

(两个二进制上下对比)

# 0010   2
# 1010   10
print(2 & 10)  # 0010  2  按位与
print(2 | 10)  # 1010  10 按位或
print(2 ^ 10)  # 1000  8  按位异

比如 2 的二进制是 0010

      10 的二进制是 1010

按位与 & 两者比较,位数同时为 1 结果为 1,同时为 0 或者一个 1 一个 0,结果为 0,所以是 0010,结果输出是 2

(同时为真)

按位或 | 两者比较,位数同时为 0 结果为 0,同时为 1 或者一个 1 一个 0,结果为 1,所以是1010,结果输出是 10

(同时为假)

按位异 ^ 两者比较,位数相同为 0,不同为 1,所以是 1000,结果输出是 8

~ 按位非:取反,1 和 0 互换,正负互换

~ 按位非的通用规则:-(数值) - 1

print(~ 10)    # -(10) - 1 = -11
print(~ -2)    # -(-2) - 1 = 1

海象运算(海象表达式):主要用在 if 条件中

格式:变量 := 表达式

说明:将表达式的结果返回给变量

print(str_len := len(input('输入字符串获取长度:')))

(可以是任意值,如果是比较运算返回的就是布尔值)

详细介绍如下:

http://www.lryc.cn/news/528601.html

相关文章:

  • 嵌入式知识点总结 Linux驱动 (五)-linux内核
  • zabbix7 配置字体 解决中文乱码问题(随手记)
  • 预测不规则离散运动的下一个结构
  • CTFSHOW-WEB入门-命令执行29-32
  • SQL Server 建立每日自动log备份的维护计划
  • doris:HLL
  • 双层Git管理项目,github托管显示正常
  • 准备知识——旋转机械的频率和振动基础
  • 知识库管理驱动企业知识流动与工作协同创新模式
  • CMake常用命令指南(CMakeList.txt)
  • 【回溯+剪枝】找出所有子集的异或总和再求和 全排列Ⅱ
  • 中国技术突破对国际格局的多维影响与回应
  • 【漫话机器学习系列】068.网格搜索(GridSearch)
  • 元宇宙下的Facebook:虚拟现实与社交的结合
  • 记忆力训练day08
  • 崇州市街子古镇正月初一繁华剪影
  • websocket webworker教程及应用
  • 【后端】Flask
  • 【cran Archive R包的安装方式】
  • 如何用matlab画一条蛇
  • Greenplum临时表未清除导致库龄过高处理
  • 【Linux】gdb——Linux调试器
  • C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed
  • C++ ——— 学习并使用 priority_queue 类
  • 基础项目实战——3D赛车(c++)
  • ODP(OBProxy)路由初探
  • 从零推导线性回归:最小二乘法与梯度下降的数学原理
  • 计算机网络__基础知识问答
  • 第 5 章:声音与音乐系统
  • C语言编译过程全面解析