零基础Python完全自学教程8:Python中常用的运算符

    时间: 浏览:192次  来源:站长在线
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础Python完全自学教程》今日分享的是第8课《Python中常用的运算符》。本节课主要内容有:算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础Python完全自学教程》今日分享的是第8课《Python中常用的运算符》。本节课主要内容有:算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。


运算符就是一些特殊的符号,用于数学计算、比较大小,判断逻辑等。Python的运费符主要包括算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。使用运算符将不同类型的数据按照一定的规则链接起来的式子,称为表达式。

使用算术运算符连接起来的式子,称为算术表达式;使用逻辑运算符连接起来的式子,称为逻辑表达式。下面开始对Python中常用的的运算符进行详细介绍。

8.1、Python中的算术运算符

算术运算符也即数学运算符,用来对数字进行数学运算,比如加减乘除。下表列出了 Python 支持所有基本算术运算符。


在python算术运算中,和数学计算一样:

1、0是不能作为除数的。否则就会出错。

2、加法运算符很简单,和数学中的规则一样。当+用于字符串时,它还有拼接字符串(将两个字符串连接为一个)的作用。


8.2、Python中的赋值运算符

赋值运算符主要用来变量等赋值。赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。


图8.2为常用的赋值运算符

站长在线提醒大家,很多程序员常常把“=”和“==”搞混淆了。很多编程语言常常用错的两个符号。

8.3、Python中的比较运算符(关系运算符

比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。

Python 比较运算符汇总


图8.3Python 比较运算符汇总

Python 比较运算符的使用举例:

print("89是否大于100:", 89 > 100)
print("24*5是否大于等于76:", 24*5 >= 76)
print("86.5是否等于86.5:", 86.5 == 86.5)
print("34是否等于34.0:", 34 == 34.0)
print("False是否小于True:", False < True)
print("True是否等于True:", True < True)

运行结果:

89是否大于100: False
24*5是否大于等于76: True
86.5是否等于86.5: True
34是否等于34.0: True
False是否小于True: True
True是否等于True: False
>>> 

8.4、Python中的逻辑运算符

高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。Python 的逻辑运算,主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)。


本教程参考很多的书籍、在线课程,最终采用C语言中文网的说法:

Python 逻辑运算符用于操作 bool 类型的表达式,执行结果也是 bool 类型,这两点其实都是错误的!

Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。请看下面的例子:

print(100 and 200)
print(45 and 0)
print("" or "HTTPs://WWW.olzz.com/xuetang/python/")
print(18.5 or "https://www.olzz.com/xuetang/python/")

运行结果:

200
0
https://www.olzz.com/xuetang/python/
18.5
>>> 

你看,本例中 and 和 or 运算符操作的都不是 bool 类型表达式,操作的结果也不是 bool 值。

逻辑运算符的本质

在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。

另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。

以上两点极其重要,了解这两点不会让你在使用逻辑运算的过程中产生疑惑。

对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行 and 运算:

如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。

如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行 or 运算:

如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。

如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

8.5、Python中的位运算符

为运算符是把数字看作二进制数来进行计算的,因此需要将要执行运算的数据转换为二进制,然后才能运算。Python中的位运算符有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左位移(<<)和右移位(>>)运算符。

8.5.1、“按位与运算(&)

按位与运算的运算符为“&”,它的运算法则是,两个操作数的二进制表示,只有对应位都为1,结果才为1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。看下方12&8的运算过程。

  #12&8的运算过程
  0000 0000 0000 1100
& 0000 0000 0000 1000

0000 0000 0000 1000

8.5.2、“按位或”运算(|)

“按位或”运算的运算符为(|),它的运算法则是,两个操作数的二进制表示,只有对应位都为0,结果才为0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。看下方4|8的运算过程。

   #4|8的运算过程
   0000 0000 0000 0100
|  0000 0000 0000 1000 
0000 0000 0000 1100

8.5.3、“按位异或”运算(^)

“按位异或”运算的运算符为(^),它的运算法则是,两个操作数的二进制表示相同(同时为0或同时为1),结果才为0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。看下方4|8的运算过程。看下方31^22的运算过程。

     #31^22的运算过程
     0000 0000 0001 1111
^    0000 0000 0001 0110

0000 0000 0000 1001

8.5.4、“按位取反”运算(~)

“按位取反”运算也称“按位非”运算,运算符为“~”。“按位取反”运算就是将操作位数对应二进制中的1改为0,0改为1,如下所示:

     #~123的运算过程
~    0000 0000 0111 1011

1111 1111 1000 0100

在Python中,使用函数print()函数输出8.5.1~8.5.4的运算结果,代码如下:

print("12&8 = "+str(12&8))     #按位与计算整数的结果
print("4|8 = "+str(4|8))       #按位或计算整数的结果
print("31^22 = "+str(31^22))   #按位异或计算整数的结果
print("~123 = "+str(~123))     #按位取反计算整数的结果

运算结果如下:

12&8 = 8
4|8 = 12
31^22 = 9
~123 = -124
>>> 

8.5.5、“左移位”运算(<<)

“左移位”运算的运算符为“<<”,它的运算法则是将第一个二进制操作数向左移动指定的位数,左边(高位端)溢出的被丢弃,右边(低位端)的空位用0补充。左移位运算相对于乘以2的N次方。

列:int类型的数据48对应的二进制数位00110000,将左移一位,根据左移位运算符的运算规则得出(00110000<<1)=01100000,所以转换为十进制数就是96(48*2);将其左移2位,根据左移位运算符的运算规则可以得出(00110000<<2)=11000000,所以转换为十进制数就是192,(48*2的2次方),执行过程如下:

#左移位运算过程
十进制:48                 00110000(左移1位)
十进制:96      (0被丢弃)01100000(左移后补0)(左移2位)
十进制:192     (0被丢弃)11000000(左移后补0)      

8.5.6、“右移位”运算(>>)

“右移位”运算的运算符为“>>”,它的运算法则是将第一个二进制操作数向右移动指定的位数,右边(低位端)溢出的位被丢弃,而当填充左边(高位端)的空位是,如果高位端是0(正数),则左侧空位填入0;如果最高位是1(负数),则左侧空位填入1。右移位运算相对于除以2的N次方。

正数的右移运算过程:

#正数48右移1位的运算过程
十进制:48        00110000
        右移1位             
十进制:24        00011000
   左侧右移后补0    右侧0被舍弃 

负数的右移位的运算过程:

#负数-80的右移2位的运算过程:
十进制:-80     10110000
        右移2位
十进制:-20     11101100
   左侧右移后补1   右侧0倍舍弃  

站长在线微信提示:由于位移运算的速度很快,因此当程序中遇到表达式乘以或者除以2的N次方的情况下,一般采用位移运算来代替。

例如:使用位移运算符对密码进行加密解密。

IDLE中创建一个名为jiamijiemi.py的文件,然后再该文件中定义两个变量:一个用于保存密码,另一个用于保存加密参数。然后应用左移位运算符实现加密,并输出结果,最后应用右移位运算符实现解密,输出结果代码如下:

passWord = 87654321           # 密码
key = 7                       # 加密参数
print("\n原密码:",password)  # 输出原密码
password = password << key    # 将原密码左移,生成新的数字
print("\n加密后:",password)  # 输出加密后的密码
password = password >> key    # 将新密码右移,还原密码
print("\n解密后:",password)  # 输出解密后的密码

运行结果:

原密码: 87654321

加密后: 11219753088

解密后: 87654321
>>> 

以上就是对密码进行加密和解密的结果。

下节预告:零基础Python完全自学教程9:Python中运算符的优先级和条件表达式

本课内容比较多,且无课后习题。

上期答案:7.1、ABCD   7.2、BCD


文末福利:

1、关注站长在线官方公众号站长在线微信号:olzzcom ,文末也有公众号二维码,关注公众号以后回复python,本站精心整理的Python书籍、软件、工具都实时更新哦!本站所安装的python3.10、IDLE中文版 、PyCharmVisual Studio CodeSublime Text4等都在里面哦!

2、站长在线官方微信交流群已经开通了,微信扫码进入,一起交流,一起进步!

本文地址:https://www.olzz.com/pythonyunsuanfu.html
码字不易,打个赏呗
站长在线小编感谢你的支持!
站长在线站长一对一技术培训,100元两个小时
阿里云虚拟主机1G空间,120元一年
香港、美国虚拟主机100元一年,1000元永久
腾讯云双十一0.4折起,2核8G5M三年仅700元,2核4G8M三年仅198元

猜你喜欢

站长在线Python精讲:Python中正则表达式的语法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中正则表达式的语法详解》。本知识点主要内容有9点:行定位符、元字符、限定符、字符集、排除字符、选择字符、转义字符、分组、在Python中使用正则表达式语法。

2021-12-07  分类:Python教程  浏览:12次


站长在线零基础Python完全自学教程19:python中字符串完全解读

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第19课《 python中字符串完全解读》。本节课是一个大课,我分了这些知识点进行详细讲解:字符串编码转换:encode编码和decode解码详解、使用“+”运算符来拼接字符串详解、使用len()函数计算字符串的长度详解、使用索引和切片的方法截取字符串详解、使用split()方法分割、使用join()方法合并字符串详解、检索字符串的5大方法详解、字符串中字母的大小写转换的4大方法详解、去除字符串中的空格和特殊字符的4个方法详解、格式化字符串的两种方法详解。

2021-12-05  分类:Python教程  浏览:32次


站长在线Python精讲:在Python中格式化字符串的两种方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中格式化字符串的两种方法详解》。本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字符串。

2021-12-04  分类:Python教程  浏览:34次


站长在线Python精讲:在Python中去除字符串中的空格和特殊字符的4个方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中去除字符串中的空格和特殊字符的4个方法详解》。本知识点主要内容有:使用strip()方法用于去掉字符串左、右两侧的空格和特殊字符、使用lstrip()方法用于去掉字符串左侧的空格和特殊字符、使用rstrip()方法用于去掉字符串右侧的空格和特殊字符、使用replace()方法,删除中间的空格和特殊字符。

2021-12-03  分类:Python教程  浏览:36次


站长在线经典Python题:使用Python编程思想解决鸡兔同笼的问题的4种方法

欢迎你来到站长在线的Python题库,鸡兔写完Python教程以后,还是来一个Python的题目吧!想来想去,还是写一个经典的题目为好,作为本栏目的第一个题目。我就想到了比较热门的题目《鸡兔同笼的问题》,本文不是用数学的方法,而是用Python编程的方法解决鸡兔同笼的问题。用的就是《Python中的三大程序结构》: 顺序结构、选择结构和循环结构。解决问题具体的方法就是;顺序语句假设法、选择语句判定法、while循环语句遍历法、for循环语句遍历法。下面我来一一解答:

2021-12-01  分类:Python题库  浏览:48次


站长在线Python精讲:在Python字符串中字母的大小写转换的4大方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python字符串中字母的大小写转换的4大方法详解》。本知识点主要内容有:使用lower()方法,把所有大写字母转换成小写字母、使用upper()方法,把所有小写字母转换成大写字母、使用capitalize()方法,仅首字母转化为大写字母,其余小写字母、使用title()方法,把每个单词的首字母转化为大写字母,其余为小写字母。

2021-12-01  分类:Python教程  浏览:50次


站长在线Python精讲:在Python中检索字符串的5大方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中检索字符串的5大方法详解》。本知识点主要内容有:使用count()方法检索指定字符串在另一个字符串中出现的次数、使用find()方法检索是否包含指定的子字符串、使用index()方法检索是否包含指定的子字符串、使用startswith()方法用于检索字符串是否以指定子字符串开头和使用endswith()方法用于检索字符串是否以指定子字符串结尾。

2021-11-30  分类:Python教程  浏览:46次


站长在线Python精讲:在Python中使用split()方法分割、使用join()方法合并字符串详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用split()方法分割、使用join()方法合并字符串详解》。本知识点主要内容有:在Python中使用split()方法分割字符串和在Python中使用join()方法合并字符串。

2021-11-29  分类:Python教程  浏览:40次


站长在线Python精讲:在Python中使用索引和切片的方法截取字符串详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用索引和切片的方法截取字符串详解》。本知识点主要内容有:使用索引的方法截取一个字符串和使用切片的方法截取一段字符串。

2021-11-28  分类:Python教程  浏览:59次


站长在线python精讲:在Python中使用len()函数计算字符串的长度详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用len()函数计算字符串的长度详解》。本知识点主要内容有:在Python中使用len()函数计算字符串在UTF-8编码中的长度和使用len()函数计算字符串在GBK编码中的长度。

2021-11-27  分类:Python教程  浏览:61次