运算符的那些事

1.运算符

1.1 运算符的概念

运算符用于执行程序代码运算,会针对一个以上操作项目来进行运算。如:2+3,其操作数是2和3,二运算符是“+”。

1.2 运算符的分类

1.2.1 算术运算符

“+”,“-”,“*”,“/”,“//”(整除、取整),“%”(取模也叫取余)“**”(幂运算,也可开平方)
注意:字符串相加等于拼接;
在这里插入图片描述

字符串不能相减;
在这里插入图片描述
有浮点数参与的运算都返回浮点数;
在这里插入图片描述
由于运算时都要转化为二进制,有的小数运算时会产生科学计数法。如:

print(0.1+0.1+0.1-0.3)

结果本应是0,结果却是:

5.551115123125783e-17

如果解决这个问题呢?引入decimal方法解决浮点问题:

from decimal import Decimal
print(decimal('0.1')+decimal('0.1')+decimal('0.1')-decimal(0.3))

结果就是:

0.0

数字与字符串相乘等于倍加字符串个数;
在这里插入图片描述

字符串与字符串不能相乘;
在这里插入图片描述

整数做除法运算的时候总是返回浮点数;0不能作除数;字符串不能相除;
在这里插入图片描述

整除只能返回结果的整数位;
在这里插入图片描述

取余返回两个数相除的余数;
在这里插入图片描述

-10//3=-4

解释一下,本来,应该是-3.33333由于要向下取整,故而结果是-4
再来看:

10%3=1
-10%3=2

解释一下为什么是这样的,请看下面的推导过程:

10%3=1  的计算过程: 10//3=3  余数的计算是    10-3×3=1
-10%3=2 的计算过程: -10//3=-4 余数的计算是    -10-3×(-4)=2

取整运算过程中都遵循向下取整,然后再继续计算余数。
求商和余数的运算也可以这样:

x=10
y=3
print(divmod(x,y))

结果

(3, 1)

我们可以验证:

x=-10
y=3
print(divmod(x,y))

结果

(-4, 2)

幂运算也可以用作开平方,开平方返回小数
在这里插入图片描述

1.2.2 赋值赋值运算符

“=”将符号右边的值赋给符号左边的变量。如果有多次赋值,保留最新赋值。
在这里插入图片描述
像x=x+3这类赋值,在python中有简便的运算写法:
x = x + 3 # 需要给x重新赋值
x += 3 # 等价于 x = x + 3
x -= 3 # 等价于 x = x - 3
x *= 3 # 等价于 x = x * 3
x /= 3 # 等价于 x = x / 3
x **= 3 # 等价于 x = x ** 3
x //= 3 # 等价于 x = x // 3
x %= 3 # 等价于 x = x % 3

1.2.2.1 拓展

在VF中代负值求余数的规则是:余数的符号取决于除数符号,-10%3按正常除法得-1,但正确结果是用除数+余数,即3+(-1)=2;10%-3按正常除法得1,但正确结果是用除数+余数,即-3 + 1=-2;,-10%-3=-1 是同号相除,余数的符号取决于除数符号,所以-10%-3=-1. (摘自网上)

1.2.3 比较运算符(关系运算符)

符号 含义
> 比较左侧值是否大于右侧值
>= 比较左侧值是否大于或等于右侧值
< 比较左侧值是否小于右侧值
<= 比较左侧值是否大于或等于右侧值
== 比较的是两个对象(数据)的值是否相等
!= 比较的是两个对象(数据)的值是否不相等
is 比较两个对象是否是同一个对象 比较的是对象的id
is not 比较两个对象是否不是同一个对象 比较的是对象的id

注意: 字符串之间比较的是它们的ASCII值。
多位的字符串比较,对位比较,如果第一位比较出大小就不再看第二位。某位置有字符的大于没有字符的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.4 逻辑运算符

  • not 逻辑非运算:可以将符号右侧的值进行逻辑非运算。
    在这里插入图片描述
    非布尔值的逻辑非运算先将其转换位布尔值,一切0,空,none代表空性含义的值都是False,其余的都是True。
    在这里插入图片描述
  • and 逻辑与 找False,如果第一个值是False,则不看第二个值。
    在这里插入图片描述
  • or 逻辑或 找True,一旦True出现,程序立即停止,后面的不再执行。
    在这里插入图片描述

1.2.5 非布尔值的逻辑运算

当我们对非布尔值进行逻辑运算的时候,Python会将其当成布尔值进行运算,最终返回原值(不是返回布尔值)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.6 条件运算符(三元运算符)

格式为: 条件为真时的结果 if 判定条件 else 条件为假时的结果。例如:
a=1
b=2
h=a-b if a>b else a+b
那么这个h的值就是3了。h=a+b
例子:求a,b中得最大值。
a=30
b=40
m=a if a>b else b
print(m)
执行结果:
在这里插入图片描述
作业:求a,b,c之间的最大值,要用条件运算符。
答案:
a=20
b=30
c=40
m=a if a>b and a>c else b if b>a and b>c else c if c>a and c>b else a
print(m)
在这里插入图片描述
上图为输出结果

1.2.7 运算符的优先级

我们先看与或运算,我们用一个表达式来推测它们的优先级
a=2 or 3 and 4
print(a)
值是多少呢?
如果or比and的优先级高,先算or,那么a的值是2 。再算and,2 and 4 a的值结果是4 。
如果and比or的优先级高,先算and,那么a的值是4 。再算or, 2 or 4, a的值结果是2 。
输出结果是:
在这里插入图片描述
可以在python文档中查找运算符的优先顺序。
在这里插入图片描述
本节完。

猜你喜欢

转载自blog.csdn.net/m0_46738467/article/details/109447624