一进入小学,咱们就与算术结下了不解之缘,从手算、心算到口算,越算越聪明,越聪明越算,沉迷在算术的世界。可是自从了计算机以后,连写字都懒了,更别提算术了。
谁叫计算机除了可以进行加减乘除算术运算外,还可以进行左边值与右边值的比较运算,再者还可以通过and、or、not运算符进行的逻辑运算呢。
8.1 算术运算
算术运算,就是通过+、-、*、%、//符号进行加减乘除、取余和取模的运算,其中被除数不能为0。
8.1.1 整数和整数运算
整数和整数相加减、相乘,结果是整数。除的时候,若出现小数,自动转为浮点数。
a = 12 #整数
b = 20 #浮点数
#加法运算
c = a + b
print(c)
#减法运算
c = a – b
print(c)
#乘法运算
c = a * b
print(c)
#除法运算,结果有小数
c = a / b
print(c)
8.1.2 整数和浮点数运算
整数和浮点数运算时,整数会自动升为浮点数,这就是隐式转换,而用转换函数那些的称作显式转换。
a = 20 #整数
b = 20.25 #浮点数
#加法运算
c = a + b
print(c)
#减法运算
c = a – b
print(c)
#乘法运算
print(c)
#除法运算
c = a / b
print(c)
8.1.3 浮点数运算问题
浮点数和浮点数进行运算时,结果会出现偏差。像20.65-16.25正确答案应为:4.4,结果却是:4.399999999999999 。
a = 20.65 #浮点数
b = 16.25 #浮点数
#加法运算
c = a + b
print(c)
#减法运算
c = a – b
print(c)
#乘法运算
print(c)
#除法运算
c = a / b
print(c)
8.1.4 浮点数偏差解决
浮点数偏差问题,可以通过Decimal函数进行解决。
fromdecimal importDecimal
a = 20.65 #浮点数
b = 16.25 #浮点数
#减法运算
c = Decimal(str(a)) - Decimal(str(b))
print(float(c))
8.1.5 取模取余
通过%进行取余运算,结果返回除法的余数。通过//进行取模运算,结果返回商的整数部分。
a = 20
b = 16
#取余运算
c = a % b
print(c)
#取模运算
c = a // b
print(c)
8.1.6 幂运算
通过**进行冥运算,结果返回x的y次幂,跟内置函数pow()相同作用。
x = 2
y = 5
#冥运算
z = x ** y
print(z)
#冥函数
z = pow(x, y)
print(z)
8.1.7 复合赋值
复合运算符是算术运算符和赋值运算符合在一起的一种运算符,主要作用方便改变变量的值,有+=、-= 、*=、/=、%=、//=、**= 这7种。a += b ,表示a = a + b。其他的也类似。
a = 10
b = 20
#加法赋值运算
a += b
print(a)
#乘法赋值运算
c = 2
d = 50
d *= c
print(d)
8.2 比较运算
比较运算,就是通过比较运算符( 、>=、==、!=),对左右两边的对象进行比较,结果返回布尔值:True或False。
a = 10
b = 20
c = 10
#小于
print(a < b)
#小于等于<=比较
print(a <= c)
#大于>比较
print(a > b)
#大于等于>=比较
print(a >= c)
#等于==比较
print(a == b)
#不等于!=比较
print(a != b)
8.3 比较函数
Python3.7内置了比较函数operator.lt(a, b) 、operator.le(a, b) 、operator.eq(a, b) 、operator.ne(a, b) 、operator.ge(a, b) 、operator.gt(a, b),对应比较运算符,如operator.lt(a, b)对应小于
importoperator
a = 10
b = 20
print(operator.lt(a, b))
还有另一种表达形式:operator.__lt__(a, b) 、operator.__le__(a, b) 、operator.__eq__(a, b)、operator.__ne__(a, b) 、operator.__ge__(a, b) ,含义是一样的。
importoperator
a = 10
b = 20
print(operator.__lt__(a, b))
8.4 逻辑运算
逻辑运算,就是通过与(and)、或(or)、非(not)运算符进行的运算。and表示它的前后条件都成立时,返回True,否则返回False。or表示它的前后条件有一个为True,便返回True,否则返回False。Not的意思是取相反值,True的not是False,False的not是True。
a = 10
b = 20
c = 10
d = True
# and组合比较
result = a > b anda > c
print(result)
# or组合比较result = a < b ora > c
print(result)
# not
result = notdprint(result)