Python教程:第18篇 算术运算符 python的算数运算符

liftword5个月前 (12-29)技术文章54

算术运算符是用来进行基本数学运算的符号,Python中的算术运算符有7个:加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)、乘方(**)。

其中加减乘除四则基本运算以及乘方运算与数学中相同概念运算规则相同,整除表示只保留商的整数部分,取余表示返回余数。

其中加法(+)和乘法(*)不仅可以用于数值的相加相乘,也可用于字符串、列表等数据的连接与重复。其他的就是纯粹的数值运算符了。

注:有些教程中称Python2只提供了/一个除法运算。但经过我的实践测试,Python2.7.16也是支持//整除运算的,其运算结果也与/有所不同。所以我觉得这种说法是错误的。

加法+

加法运算符(+)返回两个数值相加的结果,不仅可以用于正数相加:

也可以用于负数相加:

不仅可用于整数,也可用于小数,但需要注意小数的精度问题,可能与想要的结果有差异:

还可用于复数的相加:

加法运算符还可以连接字符串、元组、列表等非数值类型的数据:

在Python 中,逻辑值被当作特殊的数值类型,逻辑值True被解析为数值1,False解析为0,它们可以与数值相加,也可与其他逻辑值相加:

除此之外,加法运算符不能连接其他不同类型的两个值,包括数值与字符串、逻辑值与字符串。

也包括元组与列表:

要想连接两个不同类型,可以使用函数int或str进行转换,比如下面是将数值转换成字符串连接的示例:

下面是将字符串转换成数值与数值相加的示例:

不支持++、--

在Python中,前缀++、--被解析为两个连续正数、负数运算,比如--1等同于-(-1),++1等同于+(+1),其值均为1本身。

而后缀++、--产生语法错误。这一点与C系列语言是不同的,而B系列语言不支持这两种用法。

减法-

返回两个数的差。即加法的逆运算。支持的大多数功能与加法相同,即正负数、整数小数:

也支持复数:

也支持逻辑值:

唯一的不同点是不支持数值(包括特殊的数值逻辑值)之外的数据类型的减法,比如字符串:

当然列表的减法也是不支持的:

乘法*

和加法类似,Python中的乘法*也有两个功能:

表示两个数值相乘:

字符串重复:

列表重复:

当然还支持其他类型数据的重复。

除法/

/为除法运算符。最多保留17位有效数字(加上小数点最多18位)。下面是个示例:

需要注意的是,/在Python2与Python3中的运算规则不同。在Python2中,整数除整数,只能得出整数,即使其结果可能是小数(小数部分会被直接丢弃,而不是四舍五入),下面是Python2.7.16 Shell模式的运行结果:

>>> 3/2
1
>>> type(3/2)
<type 'int'>

在Python2中,要想得到小数部分,需要把其中一个数改成浮点数。比如1/2能得到0,1.0/2才能得到0.5。

而在Python3中,整数与整数相除其类型也是浮点数。即使它们可以完全整除:

Python2中的除法运算规则,与以前其他语言运算规则是类似的,但与人们感觉中的数学中的除法不一样,Python3修改成与人们感觉一致的用法。

最后需要注意的是,除数不能为0,这一点对于Python2和3是一样的,都会返回ZeroDivisionError错误:

取余%

%取余运算符又称取模、求余,返回除法的余数。

商始终是整数,如果被除数包含小数部分,将会保留在余数中,但需要注意精度与预想的不同:

如果除数包含小数部分,则会将除数作为一个整体单元,不足这个单元的部分作为余数返回:

只有被除数与除数都是整数的时候,返回值才是整数,被除数和除数只要有一个是小数,返回值就是小数,不管是否能被整除:

取余也要进行除法运算,所以除数也不能为0。

乘方**

乘方运算又称幂运算,用两个*表示,比如x**y返回x的y次方。

下面是输出2的20次方的示例:

乘方与开方互为逆运算,所以也可以将一个数的倒数作为指数而实现开方运算,比如求3的平方根,将2的倒数2分之1做为3的指数就可以了:

与一个星号表示的乘法不同,指数**不能应用于字符串、列表等数据类型的运算,当然,这样做本身是不合逻辑的:

整除//

返回商的整数部分,其规则是返回小于商的最大整数。对于正数,返回去除小数部分的整数部分:

对于负数,返回去除小数部分的整数部分再减1:

如果被除数与除数都是整数,返回值亦为整数,有一个是小数,返回值即为浮点数(即小数)。这一点,Python2与3没有版本差异。

整除其实也是除法运算,所以除数也不能为0。


其他运算符相关文章

Python教程:第17篇 比较运算符

Python教程:第11篇 变量赋值

Python教程:运算符篇相关内容预告

相关文章

Python包版本表示趣谈 python语言的版本

Python包版本表面上看起来很简单,但是同一般业界通用的定义良好的版本方案却不一样,有点诡异。比如正常的版本表示都为SemVer 1.2.3或CalVer 2023.6.1,有时候还有带预发布版本后...

pyenv 管理多个 Python 版本(1) 多个python版本如何切换

引言你是否曾希望参与一个支持多个 Python 版本的项目,但又不知道如何轻松地测试所有这些版本?你是否对 Python 的最新版本感到好奇?或许你想尝试这些新功能,但又不想冒险破坏你的开发环境。幸运...

windows使用pyenv安装多python版本环境

官方的介绍。pyenv lets you easily switch between multiple versions of Python. It’s simple, unobtrusive, an...

Win7 可以下载python最高什么版本?

环境:Win7 旗舰版X64问题描述:老笔记本,想安装python,现在下载python最高是什么版本?解决方案:发售日期: 2021 年 5 月 3 日,最高版本 Python 3.8.10 X64...

Python 虚拟环境管理库 - poetry python虚拟环境venv

简介Poetry 是 Python 中的依赖管理和打包工具,它允许你声明项目所依赖的库,并为你管理它们。相比于 Pipev,我觉得 poetry 更加清爽,显示更友好一些,虽然它的打包发布我们一般不使...