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

Python3(6) 运算符

        在 Python 编程中,运算符是处理数据和构建逻辑的关键工具。理解并熟练运用各类运算符,对于编写高效、准确的代码至关重要。本文将深入探讨 Python3 中的各种运算符,并通过丰富的代码示例进行详细讲解,方便大家日后复习和回顾。


一、运算符概述

        运算符是用于执行特定操作的符号,如在 “4 + 5 = 9” 中,“+” 就是运算符,4 和 5 是操作数 。Python3 支持多种运算符,涵盖算术、比较、赋值等多个类别,下面我们逐一展开介绍。


二、算术运算符

        算术运算符用于基本数学运算,具体如下:

运算符描述示例(设 a = 10,b = 21)
+加法,两个对象相加a + b 结果为 31
-减法,得到负数或两数相减a - b 结果为 -11
*乘法,或用于重复字符串a * b 结果为 210;'abc' * 3 结果为 'abcabcabc'
/除法,结果为浮点数b /a 结果为 2.1
%取模,返回除法余数b % a 结果为 1
**幂运算,返回 x 的 y 次幂a ** b 即 10 的 21 次方
//取整除,向小的方向取整9 // 2 结果为 4;-9 // 2 结果为 -5

示例代码

a = 21
b = 10
c = 0c = a + b
print(f"1 - c的值为:{c}")  # 输出31c = a - b
print(f"2 - c的值为:{c}")  # 输出11c = a * b
print(f"3 - c的值为:{c}")  # 输出210c = a / b
print(f"4 - c的值为:{c}")  # 输出2.1c = a % b
print(f"5 - c的值为:{c}")  # 输出1a = 2
b = 3
c = a ** b
print(f"6 - c的值为:{c}")  # 输出8a = 10
b = 5
c = a // b
print(f"7 - c的值为:{c}")  # 输出2

三、比较运算符

        比较运算符用于比较对象,返回布尔值(True 或 False) 。

运算符描述示例(设 a = 10,b = 20)
==判断两个对象是否相等(a == b) 返回 False
!=判断两个对象是否不等(a!= b) 返回 True
>判断 x 是否大于 y(a> b) 返回 False
<判断 x 是否小于 y(a < b) 返回 True
>=判断 x 是否大于等于 y(a>= b) 返回 False
<=判断 x 是否小于等于 y(a <= b) 返回 True

示例代码

a = 21
b = 10if a == b:print("1 - a等于b")
else:print("1 - a不等于b")  # 输出:1 - a不等于bif a!= b:print("2 - a不等于b")  # 输出:2 - a不等于b
else:print("2 - a等于b")if a < b:print("3 - a小于b")
else:print("3 - a大于等于b")  # 输出:3 - a大于等于bif a > b:print("4 - a大于b")
else:print("4 - a小于等于b")  # 输出:4 - a小于等于ba = 5
b = 20
if a <= b:print("5 - a小于等于b")  # 输出:5 - a小于等于b
else:print("5 - a大于b")if b >= a:print("6 - b大于等于a")  # 输出:6 - b大于等于a
else:print("6 - b小于a")

四、赋值运算符

        赋值运算符用于给变量赋值,除基本的 “=” 外,还有一些复合赋值运算符。

运算符描述示例(设 a = 10,b = 20)
=简单赋值c = a + b,将 a + b 的结果赋给 c
+=加法赋值c += a 等效于 c = c + a
-=减法赋值c -= a 等效于 c = c - a
*=乘法赋值c *= a 等效于 c = c * a
/=除法赋值c /= a 等效于 c = c /a
%=取模赋值c %= a 等效于 c = c % a
**=幂赋值c **= a 等效于 c = c ** a
//=取整除赋值c //= a 等效于 c = c //a
:=海象运算符(Python3.8+),在表达式中赋值并返回值若 list_a = [1, 2, 3, 4, 5],if (n := len (list_a)) > 3: print (f"列表元素个数为 {n},大于 3")

示例代码

a = 21
b = 10
c = 0c = a + b
print(f"1 - c的值为:{c}")  # 输出31c += a
print(f"2 - c的值为:{c}")  # 输出52c *= a
print(f"3 - c的值为:{c}")  # 输出1092c /= a
print(f"4 - c的值为:{c}")  # 输出52.0c = 2
c %= a
print(f"5 - c的值为:{c}")  # 输出2c **= a
print(f"6 - c的值为:{c}")  # 输出2097152c //= a
print(f"7 - c的值为:{c}")  # 输出99864

五、位运算符

        位运算符将数字视为二进制进行计算。以 a = 60(二进制 0011 1100),b = 13(二进制 0000 1101)为例:

运算符描述示例
&按位与,对应位都为 1 时结果位为 1,否则为 0(a & b) 结果为 12(二进制 0000 1100)
按位或,对应位有一个为 1 时结果位为 1(ab) 结果为 61(二进制 0011 1101)
^按位异或,对应位相异时结果为 1(a ^ b) 结果为 49(二进制 0011 0001)
~按位取反,1 变 0,0 变 1,~x 类似于 -x - 1(~a) 结果为 -61(二进制 1100 0011)
<<左移运算符,各二进位左移指定位数,高位丢弃,低位补 0a << 2 结果为 240(二进制 1111 0000)
>>右移运算符,各二进位右移指定位数a >> 2 结果为 15(二进制 0000 1111)

示例代码

a = 60
b = 13
c = 0c = a & b
print(f"1 - c的值为:{c}")  # 输出12c = a | b
print(f"2 - c的值为:{c}")  # 输出61c = a ^ b
print(f"3 - c的值为:{c}")  # 输出49c = ~a
print(f"4 - c的值为:{c}")  # 输出 -61c = a << 2
print(f"5 - c的值为:{c}")  # 输出240c = a >> 2
print(f"6 - c的值为:{c}")  # 输出15

六、逻辑运算符

        逻辑运算符用于布尔运算,返回布尔值。

运算符逻辑表达式描述示例(设 a = 10,b = 20)
andx and y布尔 “与”,x 为 False 时返回 x,否则返回 y 的计算值(a and b) 返回 20
orx or y布尔 “或”,x 为 True 时返回 x,否则返回 y 的计算值(a or b) 返回 10
notnot x布尔 “非”,x 为 True 时返回 False,x 为 False 时返回 Truenot (a and b) 返回 False

示例代码

a = 10
b = 20if a and b:print("1 - 变量a和b都为true")  # 输出:1 - 变量a和b都为true
else:print("1 - 变量a和b有一个不为true")if a or b:print("2 - 变量a和b都为true,或其中一个变量为true")  # 输出:2 - 变量a和b都为true,或其中一个变量为true
else:print("2 - 变量a和b都不为true")a = 0
if a and b:print("3 - 变量a和b都为true")
else:print("3 - 变量a和b有一个不为true")  # 输出:3 - 变量a和b有一个不为trueif a or b:print("4 - 变量a和b都为true,或其中一个变量为true")  # 输出:4 - 变量a和b都为true,或其中一个变量为true
else:print("4 - 变量a和b都不为true")if not (a and b):print("5 - 变量a和b都为false,或其中一个变量为false")  # 输出:5 - 变量a和b都为false,或其中一个变量为false
else:print("5 - 变量a和b都为true")

七、成员运算符

成员运算符用于检测值是否在序列中。

运算符描述示例
in在指定序列中找到值返回 True,否则返回 False若 list_d = [1, 2, 3],1 in list_d 返回 True
not in在指定序列中未找到值返回 True,否则返回 False4 not in list_d 返回 True

示例代码

a = 10
b = 20
list_c = [1, 2, 3, 4, 5]if a in list_c:print("1 - 变量a在给定的列表中list中")
else:print("1 - 变量a不在给定的列表中list中")  # 输出:1 - 变量a不在给定的列表中list中if b not in list_c:print("2 - 变量b不在给定的列表中list中")  # 输出:2 - 变量b不在给定的列表中list中
else:print("2 - 变量b在给定的列表中list中")a = 2
if a in list_c:print("3 - 变量a在给定的列表中list中")  # 输出:3 - 变量a在给定的列表中list中
else:print("3 - 变量a不在给定的列表中list中")

八、身份运算符

        身份运算符用于比较两个对象的存储单元。

运算符描述示例
is判断两个标识符是否引用同一对象x is y 类似 id (x) == id (y),是则返回 True,否则返回 False
is not判断两个标识符是否引用不同对象x is not y 类似 id (x) != id (y),是则返回 True,否则返回 False

示例代码

a = 20
b = 20if a is b:print("1 - a和b有相同的标识")  # 输出:1 - a和b有相同的标识
else:print("1 - a和b没有相同的标识")if id(a) == id(b):print("2 - a和b有相同的标识")  # 输出:2 - a和b有相同的标识
else:print("2 - a和b没有相同的标识")b = 30
if a is b:print("3 - a和b有相同的标识")
else:print("3 - a和b没有相同的标识")  # 输出:3 - a和b没有相同的标识if a is not b:print("4 - a和b没有相同的标识")  # 输出:4 - a和b没有相同的标识
else:print("4 - a和b有相同的标识")

九、运算符优先级

        运算符优先级决定表达式的计算顺序。优先级从高到低大致如下(同一单元格内优先级相同,幂运算从右至左结合,其他从左至右结合):

运算符描述
(expressions...)[expressions...]{key: value...}{expressions...}圆括号表达式、列表、字典、集合
x[index]x[index:index]x(arguments...)x.attribute索引、切片、调用、属性引用
await xawait 表达式
**乘方(指数)
+x-x~x正号、负号、按位取反
*@///%乘、矩阵乘、除、整除、取余
+-加、减
<<>>移位
&按位与
^按位异或
``按位或
innot inisis not<<=>>=!===比较运算、成员检测、标识检测
not x逻辑非
and逻辑与
or逻辑或
if -- else条件表达式
lambdalambda 表达式
:=赋值表达式

示例代码

a = 20
b = 10
c = 15
d = 5
e = 0e = (a + b) * c / d
print(f"(a + b) * c / d运算结果为:{e}")  # 输出90.0e = ((a + b) * c) / d
print(f"((a + b) * c) / d运算结果为:{e}")  # 输出90.0e = (a + b) * (c / d)
print(f"(a + b) * (c / d)运算结果为:{e}")  # 输出90.0e = a + (b * c) / d
print(f"a + (b * c) / d运算结果为:{e}")  # 输出50.0x = True
y = False
z = False
print("情况1:默认优先级(先算and)")
if x or y and z:  # 等同于x or (y and z)print("yes")  # 输出yes
else:print("no")print("\n情况2:强制改变优先级(先算or)")
if (x or y) and z:  # 人为添加括号改变顺序print("yes")
else:print("no")  # 输出no

        通过上述对 Python3 各类运算符的详细介绍和代码示例,相信大家对运算符的理解和运用有了更深入的认识。在实际编程中,合理运用运算符能够让代码更加简洁、高效。希望这篇博客能成为大家复习回顾的好资料,助力大家在 Python 编程道路上不断进步。

相关文章:

  • 【解读】Chrome 浏览器实验性功能全景
  • Windows:注册表配置应用
  • STM32F103 “BluePill” 上的 DMA 原理与实践
  • Javase 基础入门 —— 03 面向对象编程
  • 欧拉环境(openEuler 22.03 LTS SP3)安装移动磐维数据库(PanWeiDB_V2.0-S2.0.2_B01)步骤
  • 【漫话机器学习系列】219.支持向量机分类器(Support Vector Classifier)
  • 【异常解决】Spring Boot 返回排序后的 Map 但前端接收顺序不对的解决方案
  • Django 实现电影推荐系统:从搭建到功能完善(附源码)
  • Django DRF实现用户数据权限控制
  • 什么是数据库的DDL和DML,有什么区别?
  • Ollama API 应用指南
  • STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异
  • ROS 快速入门教程02
  • 游戏引擎学习第240天:将渲染器移至第三层
  • 【新能源科学与技术】MATALB/Simulink小白教程(一)实验文档【新能源电力转换与控制仿真】
  • C++入门小馆: 探寻vector类
  • 【华为】防火墙双击热备-之-主备模式-单外网线路
  • 第七节:进阶特性高频题-Vue3的ref与reactive选择策略
  • 0802api设计和实战-网络ajax请求1-react-仿低代码平台项目
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • 世卫发布预防少女怀孕新指南,呼吁终止童婚、延长女孩受教育时间
  • 人民日报开新栏,冼星海之女追忆父亲创作《黄河大合唱》
  • “未来3天公布”,特朗普俄乌“和平计划”是什么?普京泽连斯基什么态度?
  • “沉默”的智驾:余承东不喊“遥遥领先”,何小鹏连夜改口 | 电厂
  • 抗美援朝老战士、华西医院精神科学术带头人之一袁德基逝世
  • “棉花糖爸爸”陈生梨:女儿将落户到贵州纳雍