运算符及基本数据类型

算数运算符

python中的算数运算符主要有一下几种

运算符 描述 实例
+ 加 - 两个对象相加 a + b 输出结果 30
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 - x除以y b / a 输出结果 2
% 取模 - 返回除法的余数 b % a 输出结果 0
** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
// 取整除 - 返回商的整数部分(向下取整 >>> 9//2 <br />4<br /> >>> -9//2<br />-5

示例:

print(4+4)			#8
print(4-4)			#0
print(4*4)			#16
print(4/4)			#1.0
print(4-4*4)		#-12

print(4**4)			#254

print(10//3)		#3 整除 向下取整
print(10.0//3)		#3.0
print(-10//3)		#-4

print(10%3)			#1 余数  运算过程:10//3=3  3*3=9  10-9=1
print(-10%3)		#2 同样遵循向下取整  运算过程:-10//3=-4  -10-[3*(-4)]=2

注意:取整除的机制是向下取整。

​ 意思是如果原结果是1.3就取1,如果原结果是-1.3就取-2

当结果是无限循环小数的时候结果会是这个样子

>>> print(10/3)
3.3333333333333335

这里的最后一位之所以是5是因为二进制的有穷性,会产生相应的误差

当我们去运算以下这个内容的时候我们会发现它的结果为 5.551115123125783e-17

print(0.1+0.1+0.1-0.3)

这是因为python中使用了科学计数法去计算数字,我们可以通过引用decimal类来消除这个错误

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

商与余数

当我们要求一个数字的商和它的余数的时候我们可以使用divmod这个方法

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

通过查看它的帮助文档可以得知它的运算方法就是 tuple (x//y,x%y)

比较运算符

在比较中,python所比较的是变量的值

例如

>>> a = 3.0
>>> b = 3
>>> print(a == b)
True
运算符 描述 实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 true.
<> 不等于 - 比较两个对象是否不相等。python3 已废弃。 (a <> b) 返回 true。这个运算符类似 != 。
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 (a < b) 返回 true。
>= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 true。

多项比较

当执行多项比较的时候有些需要注意的地方

>>> print(3>2>1)
True
>>> print(3>2>2)
False
>>> print((3>2)>1)		#3>2所以结果为Ture,Ture>1?
False

赋值运算符

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

逻辑运算符

运算符 逻辑表达式 描述 实例
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

通俗来讲,and就是遇到False输出False,or遇到True输出True

懒惰机制
print(10 and 20)

结果为20,为什么呢。

通过bool()可以知道10和20的bool值都为True(除了0以外的数字都是True)

and的懒惰机制是一个接一个看直到看到False为止

or的懒惰机制是一个接一个看直到看到True为止

所以

print(10 or 20)

输出结果为10

成员运算符

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

可以判断值是否在列表中

li = [1,2,3,4]
if 5 in li:
    print("在")
else:
    print("不在")

身份运算符

用于查看两个东西的内存地址是否一样,也就是比较id()的值是否一样。

运算符 描述 实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

三目运算符

li = [1,2,3,4]
print("in" if 5 in li else "not in")

如果判断为是的执行内容 if 条件 else 判断为不是的执行内容

数据类型

进制

十进制

用0-9、正负号表示的证书为十进制整数

八进制

以数字0和字母o或O开头,用0-7、正负号表示的整数为八进制整数

如 0o27、0O36、-0o35等等

十六进制

以数字0和字母x或X开头,用数码0-9、a-f或A-F、正负号表示的整数为十六进制整数。

如 0X59、0xa8、-0X39等等

二进制

以数字0和字母b或B开头,用数码0和1、正负号表示的整数为二进制整数。

如 0b10111、-0B1101、0b0等等

数字类型

数字类型是不可变类型。也就是说当你重新赋予a的数字的时候,计算机会重新分配一个内存地址给它。

>>> a =1
>>> id(a)
2403117590832
>>> a =2
>>> id(a)
2403117590864

python中数字类型分为:整数、浮点数和复数

python中为了让内存的消耗不要那么大,所以在一开始就使用了一种叫做小整数对象池的一种方式,用来将频繁引用的数字分配上固定的内存地址

小整数对象池的范围是:-5到256 双闭合的区间,也就是包含-5和256

整数(int)

通常被称为整型,数值为正或者负,不带小数点。

通常用十进制表示数字,但有事我们也会用八进制或十六进制来表示

​ 十六进制用0x前缀和0-9,a-f表示,例如:0xff00

​ 八进制用0o前缀和0-7表示,例如:0o45

python的整数长度为32位,并且通常是连续分配内存空间的。例如上面代码块中的,a=1和a=2时相差了32位。

python中进制转换的方法:

​ 从十进制转十六进制是用hex

​ 从十进制转八进制是用oct

​ 从十进制转二进制是用bin

浮点数(float)

浮点数就是小数

对于很大或者很小的浮点数,一般使用科学计数法来表示。

复数(complex)

复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点。

基本不用