02-3.python入门基础一操作符与表达式

news2024/12/19 11:56:10

        接上章 : 02-2.python入门语法一变量与数据类型2

        本文将深入介绍Python中的各种操作符,包括算术操作符、比较操作符、逻辑操作符等,并详细讲解如何使用这些操作符构建表达式。通过丰富的示例与详细的讲解,帮助读者全面掌握这一重要的基础知识,从而在Python编程的道路上更加得心应手。

一、操作符

算术操作符

算术操作符用于执行基本的数学运算,如加法、减法、乘法、除法等,是我们在编程中进行数值计算时最常用到的工具。Python支持以下几种基本的算术操作符:

加法运算符(+)

例如如下代码:

a = 5.2

b = 3.1

the_sum = a + b  # sum的值为8.3

print("the_sum的值为:", the_sum)

除此之外,“+”还可以作为字符串(包括后续要介绍的序列)的连接运算符。例如:

s1 = 'Hello, '

s2 = 'Charlie'

# 使用+连接两个字符串

print(s1 + s2)

减法运算符(-)

例如:

c = 5.2

d = 3.1

sub = c - d  # sub的值为2.1

print("sub的值为:", sub)

乘法运算符(*)

示例代码如下:

x = 5

y = 4

result = x * y

print('x * y =', result)  # 输出:20

除法运算符(/)

需要注意的是,在Python中,除法运算(/)的结果始终为浮点数类型,即使可以整除。例如:

a = 10

b = 5

print('a / b =', a / b)  # 输出:2.0

取模运算符(%)

用于计算两个数字相除的余数,比如:

a = 5

b = 3

print('a % b =', a % b)  # 输出:2

幂运算操作符()**:

用于计算一个数字的指数幂,像:

a = 5

b = 3

print('a ** b =', a ** b)  # 输出:125

比较操作符

比较运算符用于比较值,它根据条件返回True或False,常用于条件判断语句中,来决定程序的执行流程。Python中的比较运算符主要有以下这些:

等于运算符(==)

比较两个操作数是否相等,例如:

x = 10

y = 12

print('x == y is', x == y)  # 输出:x == y is False

不等于运算符(!=)

判断两个操作数是否不相等,如:

x = 10

y = 12

print('x!= y is', x!= y)  # 输出:x!= y is True

大于运算符(>)

检查左边的操作数是否大于右边的操作数,示例:

x = 10

y = 12

print('x > y is', x > y)  # 输出:x > y is False

小于运算符(<)

验证左边操作数是否小于右边操作数,比如:

x = 10

y = 12

print('x < y is', x < y)  # 输出:x < y is True

大于等于运算符(>=)

判断左边操作数是否大于或等于右边操作数,像这样:

x = 10

y = 10

print('x >= y is', x >= y)  # 输出:x >= y is True

小于等于运算符(<=)

用于确定左边操作数是否小于或等于右边操作数,例如:

x = 10

y = 12

print('x <= y is', x <= y)  # 输出:x <= y is True

逻辑操作符

逻辑运算符是和运算符(and)、或运算符(or)和非运算符(not),它们用于连接和修改Boolean上下文中的表达式,从而表达更复杂的条件语义。

与运算符(and)

当表达式中含有Boolean类型的操作数时,对于and操作符,只要左边的表达式为假,整个表达式就返回左边表达式的值(因为只要有一个为假就为假);只有当左边表达式为真时,整个表达式返回的值才是右边表达式的值。例如:

x = 5

y = 0

print(x and y)  # 输出:0

x = 5

y = 10

print(x and y)  # 输出:10

在Python中,对于非Boolean类型的值在Boolean上下文中的求值,and操作符遵循这样的规律:如果左边的值为假值(如0、空字符串、None等),则整个表达式返回左边的值;如果左边的值为真值,则返回右边的值。例如:

test1 = 12

test2 = 0

test3 = ''

print(test1 and test3)  # 输出:''

print(test3 and test1)  # 输出:''

或运算符(or)

对于Boolean类型操作数的情况,只要两边的表达式有一个为真,整个表达式的结果就是真(即返回真值表达式的值),只有当两边都是假时,才返回假值表达式的值。例如:

x = 5

y = 0

print(x or y)  # 输出:5

x = 0

y = 0

print(x or y)  # 输出:0

非运算符(not)

它的作用是对操作数取反,若操作数是True则返回False,若操作数是False则返回True。例如:

x = True

print(not x)  # 输出:False

x = 5

print(not x < 10)  # 输出:False,因为x < 10为True,取反后就是False

其他常用操作符

除了上述常见的算术、比较和逻辑操作符外,Python中还有一些其他常用的操作符,它们在不同的场景下发挥着重要作用。

成员关系运算符(in、not in)

用于判断某个元素是否在指定的数据类型(如列表、元组、字典、集合等)里面。例如:

computer = ["主机", "显示器", "鼠标", "键盘"]

print("主机" in computer)  # 输出:True

print("音响" not in computer)  # 输出:True

身份运算符(is、is not)

is 操作符比较的是对象的身份标识是否相等,即是否是同一个对象,是否指向同一个内存地址;is not则是取反的意思。例如:

a = 2

b = 2

print(a is b)  # 输出:True,因为Python对于小整数有缓存机制,这里a和b指向同一个对象

、操作符的优先级

优先级概述

在Python中,操作符具有不同的优先级,这决定了在一个包含多个操作符的表达式中,哪个操作符会先被计算。例如在表达式 2 + 3 * 4 中,按照优先级规则,会先进行乘法运算 3 * 4 得到 12 ,然后再进行加法运算,最终结果为 14 ,而不是先计算 2 + 3 再乘以 4 得到 20 。了解操作符的优先级,能帮助我们准确地预测表达式的计算结果,避免出现逻辑错误。

优先级具体列表

以下是Python中操作符从低到高的优先级列表:

  1. lambda:用于定义匿名函数,它在操作符优先级中处于相对较低的位置。例如:lambda x: x + 1 ,不过在实际复杂表达式中它与其他操作符共同出现并涉及优先级比较的情况相对少一些。
  2. or:逻辑或操作符,如 True or False ,在多个逻辑判断的表达式里按照其优先级参与运算。
  3. and:逻辑与操作符,像 True and False ,优先级高于 or ,例如在表达式 True and False or True 中,会先计算 True and False 得到 False ,然后再计算 False or True ,最终结果为 True 。
  4. not:逻辑非操作符,用于对布尔值取反,是一元操作符,优先级高于 and 和 or 。例如 not True 结果为 False ,在复杂逻辑表达式里会先执行它来改变操作数的布尔值状态。
  5. in、not in:成员关系运算符,用于判断元素是否在某个序列(如列表、元组、字典等)中,像 'a' in ['a', 'b', 'c'] 会返回 True ,其优先级高于逻辑操作符,低于算术操作符等。
  6. is、is not:身份运算符,比较两个对象是否是同一个对象(即是否指向相同的内存地址),例如 a = [1, 2]; b = a; print(a is b) 会返回 True ,其优先级与 in、not in 处于相近层级。
  7. <、<=、>、>=、==、!=:比较操作符,用于比较两个值的大小关系或者是否相等,返回布尔值。例如 3 > 2 返回 True ,这些比较操作符的优先级低于算术操作符,常用于条件判断语句中的条件构建。
  8. |:按位或操作符,是针对二进制位进行的操作,将两个操作数对应的二进制位进行或运算,例如 5 | 3 (二进制 0101 | 0011 )得到 7 (二进制 0111 ),它的优先级高于逻辑操作符,低于移位操作符等。
  9. ^:按位异或操作符,同样针对二进制位,当两个操作数对应二进制位不同时为 1 ,相同时为 0 ,像 5 ^ 3 (二进制 0101 ^ 0011 )结果为 6 (二进制 0110 )。
  10. &:按位与操作符,对两个操作数的二进制位进行与运算,例如 5 & 3 (二进制 0101 & 0011 )得到 1 (二进制 0001 ),优先级高于逻辑操作符。
  11. <<、>>:移位操作符,分别是左移和右移操作,比如 2 << 2 (二进制 10 左移两位变成 1000 )结果为 8 ,在数值运算相关的操作符中它们有其特定的优先级位置。
  12. +、-:这里既包括加法和减法算术运算符,也包含作为正负号的一元运算符情况。例如 3 + 5 是常规加法运算,而 -3 里 - 就是取负操作,它们的优先级在幂运算之后,乘除运算等之前(当作为算术运算符时)。
  13. *、/、//、%:乘、除、地板除、取模这些算术操作符,常用于数值计算,像 10 / 3 得到浮点数 3.3333333333333335 ,10 // 3 得到整数 3 ,10 % 3 得到余数 1 ,它们的优先级高于加法和减法算术操作符。
  14. +x、-x:一元的正号和负号操作符,比如 -5 里 - 改变了 5 的正负性,在运算顺序上按照其优先级规则参与计算。
  15. ~x:按位非操作符,对操作数的二进制位进行取反操作(注意是按位取反后再加 1 得到对应结果),例如 ~5 (二进制 0101 取反后为 1010 ,再考虑补码规则等最终对应结果),有其特定的优先级安排。
  16. ****:幂运算操作符,用于计算指数幂,如 2 ** 3 得到 8 ,它在所有操作符中优先级相对较高,会先于大部分其他操作符进行计算。

使用括号改变计算顺序

在编写代码时,尽管操作符有既定的优先级规则,但为了让代码的逻辑更加清晰易懂,尤其是对于复杂的表达式,我们可以使用括号来明确表达式的计算顺序。例如表达式 2 + (3 * 4) ,通过括号明确了先计算括号内的乘法 3 * 4 得到 12 ,再进行加法运算,最终结果为 14 。这样的写法比直接写 2 + 3 * 4 更直观,让人一眼就能明白计算的先后顺序,也便于后续的代码维护和阅读。再比如对于逻辑表达式 (True or False) and True ,括号使得先计算括号内的 True or False ,避免了因逻辑操作符优先级带来的潜在理解混淆。所以,合理运用括号是提高代码可读性和可维护性的重要手段,在编写复杂表达式时值得提倡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2262147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等

【自动化】Python SeleniumUtil 工具 【Python】使用Selenium 操作浏览器 自动化测试 记录-CSDN博客文章浏览阅读58次。文章浏览阅读42次。【附件】Selenium chromedriver 驱动及浏览器下载。【附件】Selenium chromedriver 驱动及浏览器下载-CSDN博客。3.安装Chrome浏览器驱动…

COMSOL快捷键及内置函数

文章目录 COMSOL快捷键使用COMSOL算子求最大值和最小值COMSOL内置函数3.1 解析函数3.2 插值函数3.3 分段函数3.4 高斯脉冲函数3.5 斜坡函数3.6 矩形函数3.7 波形函数3.8 随机函数3.9 Matlab函数3.10 SWITCH函数 COMSOL快捷键 Ctrl&#xff0b;/ 可快速打开预定义的物理量列表。…

QT绘制同心扇形

void ChartForm::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// 设置抗锯齿painter.save();// 设置无边框&#xff08;不需要设置QPen&#xff0c;因为默认是不绘制边框的&#xff09;QPen pen(Qt::NoPen);// QPen pen…

最大质因子序列

最大质因子序列 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 任意输入两个正整数m, n (1 < m < n < 5000)&#xff0c;依次输出m到n之间每个数的最大质因子&#xff08;包括m和n&#xff1b;…

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…

AI芯片常见概念

文章目录 AI芯片常见概念前言常见概念AI芯片分类按照芯片的技术架构分GPU半定制化的 FPGA全定制化 ASIC神经拟态芯片 按应用场景分训练卡推理卡 按部署位置分国产AI卡资料汇总 封装相关Chiplet技术3DIC三星多芯片集成联盟&#xff08;Samsung Multi-Die Integration Alliance&a…

Fiddler(抓包测试工具)下载安装步骤

目录 介绍 主要功能&#xff1a; 使用场景&#xff1a; 一、下载 二、安装 ​编辑三、测试 介绍 Fiddler 是一个强大的网络调试工具&#xff0c;用于捕获和分析 HTTP/HTTPS 请求与响应。它通过代理服务器捕获流量&#xff0c;帮助开发者调试 Web 应用、API&#xff0c;进…

Elasticsearch-DSL高级查询操作

一、禁用元数据和过滤数据 1、禁用元数据_source GET product/_search {"_source": false, "query": {"match_all": {}} }查询结果不显示元数据 禁用之前: {"took" : 0,"timed_out" : false,"_shards" : {&quo…

gorm源码解析(四):事务,预编译

文章目录 前言事务自己控制事务用 Transaction方法包装事务 预编译事务结合预编译总结 前言 前几篇文章介绍gorm的整体设计&#xff0c;增删改查的具体实现流程。本文将聚焦与事务和预编译部分 事务 自己控制事务 用gorm框架&#xff0c;可以自己控制事务的Begin&#xff0…

什么是双声道立体声环绕声全景声 | 一文讲清楚沉浸式声音基本设定

目录 一、 沉浸式声音基本概念1. 声学上的沉浸式2. 空间音频技术3. 声源位置4. 人耳声音定位&#xff08;水平&垂直方向&#xff09;5. 人耳对声源距离定位的影响因素6. 头部相关传递函数7. 三维声技术8. “双耳”与“立体声”9. 耳机重放与扬声器重放10. 环绕声11. 高度声…

使用C语言库函数格式化输入时格式类型与数据类型不匹配导致程序异常

问题 使用两次sscanf()库函数从两个字符串中按照指定的格式读取数据&#xff0c;执行完毕后发现第一个正常读取的数据被篡改。项目在Ubuntu上使用CMake和Ninja构建项目&#xff0c;编译时没有错误和警告。 复现 为方便调试&#xff0c;在keil中编译stm32工程代替&#xff0c…

车牌识别之三:检测+识别的onnx部署(免费下载高精度onnx模型)

依赖 paddle2onnx1.3.1 onnxruntime-gpu1.14.0 ultralytics8.3.38背景 在车牌识别之一&#xff1a;车牌检测(包含全部免费的数据集、源码和模型下载&#xff09;我们得到了车牌检测模型&#xff1b; 在车牌识别之二&#xff1a;车牌OCR识别(包含全部免费的数据集、源码和模型…

WPF ControlTemplate 控件模板

区别于 DataTemplate 数据模板&#xff0c;ControlTemplate 是控件模板&#xff0c;是为自定义控件的 Template 属性服务的&#xff0c;Template 属性类型就是 ControlTemplate。 演示&#xff0c; 自定义一个控件 MyControl&#xff0c;包含一个字符串类型的依赖属性。 pub…

在IDE中使用Git

我们在开发的时候肯定是经常使用IDE进行开发的&#xff0c;所以在IDE中使用Git也是非常常用的&#xff0c;接下来以IDEA为例&#xff0c;其他的VS code &#xff0c;Pycharm等IDE都是一样的。 在IDEA中配置Git 1.打开IDEA 2.点击setting 3.直接搜索git 如果已经安装了会自…

Excel中如何消除“长短款”

函数微调可以可以实施&#xff0c;简单且易于操作的气球&#x1f388;涨缩更妙。 (笔记模板由python脚本于2024年12月17日 06:19:13创建&#xff0c;本篇笔记适合用Excel操作数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Fre…

微命令 微指令 微程序 微操作

微命令是计算机控制部件通过控制线向执行部件发出的各种控制命令&#xff0c;它是构成控制序列的最小单位 微命令与微操作是一一对应的关系&#xff0c;微命令是微操作的控制信号&#xff0c;而微操作是微命令的执行过程。在机器的一个CPU周期中&#xff0c;一组实现一定操作功…

Spring 不推荐使用@Autowired

Spring 不推荐使用Autowired 原因&#xff1a;为什么 Spring和IDEA 都不推荐使用 Autowired 注解_autowired为什么不推荐-CSDN博客 解决方法&#xff1a; 使用Resource注解。 使用构造函数注入。缺点显而易见&#xff0c;当成员变量很多时&#xff0c;构造函数代码冗长&#…

6、AI测试辅助-测试报告编写(生成Bug分析柱状图)

AI测试辅助-测试报告编写&#xff08;生成Bug分析柱状图&#xff09; 一、测试报告1. 创建测试报告2. 报告补充优化2.1 Bug图表分析 3. 风险评估 总结 一、测试报告 测试报告内容应该包含&#xff1a; 1、测试结论 2、测试执行情况 3、测试bug结果分析 4、风险评估 5、改进措施…

使用re模块

一、常量 常量说明 re.M re.MULTLINE 多行模式 re.S re.DOTALL 单行模式 re.I re.IGNORECASE 忽略大小写 re.X re.VERBOSE 忽略表达式的空白字符 可以使用|开启多个选项 二、方法 2.1 编译 compile re.compile(pattern,[,falgs]) pattern是正则表达式的字符串 设定falgs&…

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu&#xff0c;…