运算符及基本数据类型
算数运算符
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都是浮点。
基本不用