文章目录
- 前言
- 一、算术运算符
- 二、赋值运算符
- 三、比较运算符
- 四、逻辑运算符
- 五、位运算符
- 六、运算符的优先级
- 案例实战
- 总结
前言
运算符是一些人为定义的特殊符号,比如我们生活当中最常见的+ 、-、×、÷,它们主要用于数学计算、比较大小和逻辑运算等等。那这些运算符在Python中怎么表示以及划分呢?
在Python语言中将运算符划分为五种类型:①算术运算符、②赋值运算符、③比较运算符、④逻辑运算符、⑤位运算符。第五种------位运算符稍后作为了解即可(开发上基本用不到),今天重点跟大家介绍前面四种运算符以及这些运算符的优先级。
一、算术运算符
算术运算符是处理四则运算(加减乘除)的符号,在日常数字的处理中应用最多。常用的算术运算符如下表所示:
运算符 | 说明 | 举例 | 结果 |
---|---|---|---|
+ | 加 | 1.5 + 23 | 24.5 |
- | 减 | 8.76 - 5 | 3.76 |
* | 乘 | 10 * 2.8 | 28.0 |
/ | 除 | 5 / 2 | 2.5 |
// | 取整(返回商的整数部分) | 5 // 2 | 2 |
% | 取余(返回除法的余数) | 5 % 2 | 1 |
** | 幂(返回x的y次方) | 2 ** 3 | 8,即2³ |
上表中的 加、减、乘、除 四则运算非常简单,这里就不做详细介绍。只是有一点需要提醒大家留意:Python语言中进行四则运算时,凡是有小数参与到运算中,哪怕计算结果为整数,也是默认保留小数点后一位的0。如下图代码所示:
上面黄色部分标识的提示一定要记住哦,有的考试题在基础上会考察到
再跟大家聊聊上表中的取整、取余和幂,有的小伙伴数学基础比较差的对这几个可能还是比较懵的状态。
取整顾名思义就是将数据只取整数部分,不要小数部分。字面意思是这样,但是取整的方式可不是直接这样分开只拿前面的部分哦。取整的方式有三种:向下取整、四舍五入、向上取整。我们这里所说的取整运算符就是向下取整这种方式,也就是最简单粗暴的只取整数部分,比如2.45向下取整就是2。在Python中取整运算符的表示符号是两个正斜杠----“ // ”。如下图所示:
至于刚才所说的三种取整方式的区别以及详细用法,想详细了解的博友可以在评论区留言,博主之后专门写一篇博客针对这块的内容。由于篇幅原因,在此就不详细赘述了。
取余就是两数相除,我们取余数部分。比如9除以5,如果取余数的话就是商1余4。在Python中取余运算符的表示符号是一个百分号----“ % ”,如下图所示:
注意:使用除法(/或//)运算符和求余(%)运算符时,除数(第二个操作数)不能为0,否则将会出现异常,如下图所示:
二、赋值运算符
赋值运算符主要用来为变量赋值。使用时可以直接把赋值运算符 “=” 右边的值赋给左边的变量,当然也可以进行某些运算后再赋值给左边的变量。在Python中常用的赋值运算符如下表所示:
运算符 | 说明 | 实例简化写法 | 展开形式 |
---|---|---|---|
= | 基本赋值运算 | a = b | a = b |
+= | 加赋值 | a += b | a = a + b |
-= | 减赋值 | a -= b | a = a - b |
*= | 乘赋值 | a *= b | a = a * b |
/= | 除赋值 | a /= b | a = a / b |
//= | 取整赋值 | a //= b | a = a // b |
%= | 取余赋值 | a %= b | a = a % b |
**= | 幂赋值 | a **= b | a = a ** b |
大家看上表应该就明白了,赋值运算符其实归根到底一句话:就是把等号右边的东东给到左边,不管右边是个值,还是一个表达式。在这里给大家顺便说说表达式的概念:使用运算符将不同类型的数据按照一定的规则连接起来的式子称为表达式。
至于上表中的简化写法其实也很好理解,就拿“加赋值”来说:a += b 就是把 a 和 b 相加之后的结果赋给 a ,相当于 a = a + b。如下图所示代码:
上图代码思路:首先把10赋给变量a,那a的值就是10,然后把a+5赋给变量a,就是相当于把10+5赋给变量a,那a的值又成为了15,最终打印出a的值,就是15。
这些简化写法的存在就是为了方便提升我们开发人员的开发效率,这也是我们常在别人代码里面看到的,如果下次再见到那些简化版赋值运算符,我们就会明白这些含义了。当然如果看着别扭,也可以像上表的展开形式一样,先展开还原再看。其余赋值运算符就不多说了,原理都是一样的。
三、比较运算符
比较运算符,也叫关系运算符,主要用于对变量或表达式的结果进行大小、真假等的比较。如果比较的结果为真,就返回True,如果为假,就返回False。看到这两个单词,不知道大家还有咩有印象,在哪里出现过呢?
在博主之前讲的【Python语言的33个保留字】和【Python中的基本数据类型】博客里面就有这两个单词,温故而知新哦。
比较运算符通常用在条件语句中作为判断的依据。比如下图这组代码:
上图代码的大概意思大家都可以看懂,就是一个比较大小的小程序。只是里面涉及的条件判断语句我们还没有学到,这在接下来博客会讲到。代码里面的符号比如:>、== 这些就是比较运算符,有小伙伴可能会纳闷了:里面怎么会出现了两个等于号?
注意:在Python中 “=” 和 “==” 表示的含义不一样,不要搞混哦。“=”表示的是赋值,把一个值赋给另一个变量,目的是方便我们后续代码中处理该值的时候不至于重写,直接用变量代替即可。而“==”才是真正表示谁和谁的大小相等,因此我们在后面学到条件语句的时候,如果需要判断某某等于某某,一定要写 == ,如果是写成一个等号,代码会报错。
接下来我们看看Python中的比较运算符,如下表所示:
运算符 | 作用 | 举例 | 结果 |
---|---|---|---|
> | 大于 | 1 > 2 | False |
< | 小于 | 30 < 68 | True |
== | 等于 | ‘A’ == ‘a’ | False |
>= | 大于或等于 | 66 >= 55 | True |
<= | 小于或等于 | 78 <= 13 | False |
!= | 不等于 | 5 != 23 | True |
上表当中的运算符大家都看得懂,只是有小伙伴可能会好奇:数字和数字可以比大小,字母和字母是怎么比的呢?比如上表中的大写字母“A”和小写字母“a”如何来比较?这里给大家说一下,字母比较大小,其实是比较字母所在ASCII表中的数字大小,这里给大家附上ASCII表一部分:
从ASCII表中我们可以看到大写字母“A”的位置是65,小写字母“a”的位置是97,所以 “A” == “a” 的结果是False,理应是 “A” < “a”,如下图代码所示:
上面提到的ASCII是文字的一种编码方式,除了ASCII,还有gbk,utf-8等等。编码和解码在后续博客中会详细讲到,在这里简单给大家先说一下,编码就是把字符按照一定规则编入计算机中进行存储,最终存储的形式就是0101这种二进制。而解码就是把计算机中这些二进制数据按照编码时使用的规则再还原成正常字符显示在电脑上。所以这些字符在计算机中必须有一个固定并且唯一的编号,否则就会出现文字混乱,比如刚才的 “A” 在计算机中的编号位置就是65,“a” 的编号位置是97。
那既然英文可以找到位置,中文当然也有位置,以此类推,中文字符也可以比较大小哦。这里给大家介绍一个内置函数ord(),这个函数的功能是帮我们找到字符对应的编号位置,用法也很简单,如下图:
有了这个神兵利器的帮助,我们也可以比较中文字符大小,看看比较结果是否一致,如下图:
可以看到结果是True,因为“家”的编号是23478,确实大于“国”的编号22269。
注意:在输入符号的时候切记是在英文状态下输入,否则会报错,比如下面这种:
说明:在Python中,当需要判断一个变量是否介于两个值之间时,可以采用“值1<变量<值2”的形式,例如“20<x<30”。
四、逻辑运算符
某商场在每周五的下午3点到5点搞促销活动,全部蔬菜打五折。那么想参加促销活动的顾客,就要在时间上满足两个条件:必须是周五,并且必须是下午3点到5点。这里面用到了逻辑关系,Python中也提供了这样的逻辑运算符来进行逻辑运算。
逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值。布尔类型是Python基本数据类型中的一种,这块如果还有小伙伴不清楚的,可以看博主之前的博客【Python中的基本数据类型】。
Python中的逻辑运算符主要包括 and(逻辑与)、or(逻辑或)、not(逻辑非)。下表列出了逻辑运算符的用法和说明:
运算符 | 含义 | 用法 | 结合方向 |
---|---|---|---|
and | 逻辑与 | 事件1 and 事件2 | 从左往右 |
or | 逻辑或 | 事件1 or 事件2 | 从左往右 |
not | 逻辑非 | not 事件 | 从右往左 |
有的小伙伴可能不理解这三个运算符是啥东东,我给大家逐个解释一下。
逻辑与,运算符是and,and的中文意思就是并且,也就是说and前后的两个事件一定要同时发生,对照上面的商场打折情景,如果要买到打折商品,必须同时满足“星期五” 和 “下午3点到5点”这两个条件。关于逻辑与,我们可以看下面的这组代码:
上述代码的功能就是判断一个数是不是正奇数,我们可以看到如果要打印出 “a是正奇数” 这句话,就必须同时满足两个条件:a>0;a除以2余数是1;这就是逻辑与的作用,限定了左右两个事件必须同时为真,结果才能为真。如果有一个是假的,那结果都会为假。
逻辑或,运算符是or,就是或者的意思。顾名思义,or左右两个事件只要有一个是真的,那结果就可以为真,不要求一定要两个都为真。如下图代码:
上面代码运行之后在冒号后面,也就是红色框选区域,需要手动输入一门编程语言,然后按下回车键,代码才会运行结束,这是因为input()函数的作用就是专门用来接收用户的终端输入。代码中显示如果会的编程语言是Python或者C或者Java中的任何一种,则都可以被录用,我们试试输入C,然后按回车键看看结果:
如果输入Ruby再看看结果:
逻辑非,也就是not 事件,事件如果是真的,加上not就变成假的;事件如果是假的,加上not就变成真的;逻辑非的作用就相当于让事件反着来,比如下图代码所示:
我们可以看到代码中a的值是10,本来a是肯定大于1的,也就是说a>1事件的结果为真,但是前面加了not,也就是逻辑非,这下结果就成了假,这就是逻辑非的作用。当然我们也可以看出逻辑非的结合顺序是从右往左,也就是我们先看右边事件的结果,再看左边的not,这和上面的逻辑与、逻辑或的结合方向刚好相反。
使用逻辑运算符进行逻辑运算时,其运算结果如下表所示:
表达式1 | 表达式2 | 表达式1 and 表达式2 | 表达式1 or 表达式2 | not表达式1 |
---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | False | False | False | True |
False | True | False | True | True |
至于运算结果这里大家也都能理解了,我就不做详细分析。
五、位运算符
位运算符是把数字看作二进制数来进行计算的,因此,需要先将要执行运算的数据转换为二进制,然后才能执行运算。具体的不做详细讲解,开发中用不到,大家知道即可。
六、运算符的优先级
运算符的优先级是指在混合运算中哪一个运算符先计算,哪一个后计算,就好像数学的四则运算应遵循的“先乘除,后加减”是一个道理。
Python中运算符的运算规则是:优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的操作按照从左到右的顺序进行。也可以像数学四则运算那样使用小括号,括号内的运算最先执行。如下表所示按从高到低的顺序列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
运算符 | 说明 |
---|---|
** | 幂 |
+、- | 正号 和 负号 |
*、/、//、% | 算术运算符 |
+、- | 算术运算符 |
>、>=、<、<=、== 、!= | 比较运算符 |
从上表我们可以看出优先级最高的是幂,优先级最低的是比较运算符。
上表中第二行的 “+” 和 “-” 表示正数、负数的意思,当然正数我们一般忽略不写+号,第四行中的 “+” 和 “-” 表示加法和减法的意思。如果以后我们遇到了别人写的代码当中有大量混合运算在里面,就可以结合上表中的运算优先级来逐一拆解计算,不至于算出五花八门的结果。
注意:在编写程序时尽量使用括号“()”来限定运算次序,避免运算次序发生错误。
案例实战
接下来我们完成一个实战案例:用Python代码实现上面的商场打折活动的情景。
思路:
首先需要设置两个变量,分别保存到场日期和具体时间,日期和时间由用户自己输入;
然后写好判断条件,使用if语句(下一篇会学到),条件有两个:星期五和15点-17点;
最后将用户输入的日期和时间分别和我们设定的条件逐一比较,两个条件都满足,就可以享受促销,否则不行;
附上全部代码:
# 打印输出提示性话语
print("================商场促销活动进行中================")
# 输入到商场的日期
week = input("请输入到商场的日期是星期几【比如星期日】: ")
# 输入到商场的具体时间
time = int(input("请输入到商场的具体时间是几点【从0-23】: "))
# 判断是否满足参加活动的条件
if week == "星期五" and 15 <= time <= 17:
print("恭喜您,获得了促销参与资格,赶快入场选购吧!!!")
else:
print("很抱歉,您来晚一步,期待下次活动。。。")
代码当中使用到了int()函数,作用是将其他类型字符转为数字类型,因为input()函数将输入的任何数据默认以字符串类型处理,但是字符串没办法和数字比较大小,所以这里将字符串先转化为数字类型。代码运行之后我们需要输入两次数据,每次输入完,记得按下回车键。来看看运行之后效果。
先看符合条件的运行效果如下图:
再看下不符合条件的运行效果:
有兴趣的小伙伴都可以动手自己敲一下这个实战案例,代码可以不看博主的,自己构思哦。
总结
今天跟大家主要讲了Python中的运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符以及它们的优先级顺序,在以后开发中最常用的就是前面四种,大家都可以针对性加强练习。