本文最后更新于:1 年前
1.整型:int
整数数据类型,简称整型,没有小数数字。
数字中的正整数、0和负整数均为整型,但只有int一种整数类型,表示为长整型
整型的长度范围不限,精度无限。
1 2 3 4 5 6 7 8 9 10 a =114514b =0c =-123456789000000print (a," " ,type(a))print (b," " ,type(b))print (c," " ,type(c))
另外可以用二进制、八进制或者十六进制来表示整型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 a =0x1111 #十六进制b =0Xffff #x可以大写,后面同c =0b01010 #二进制d =0B101111e =0o111 #八进制f =0O333print (a,b,c,d,e,f,sep ="\n" )
各进制之间允许转换:
二进制:bin()
八进制:oct()
十六进制:hex()
十进制:int()
注意上面三个返回的是字符串,如要当整型使用请使用函数*int(对应进制字符串变量名,对应进制数)*来完成转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 print ('十进制数 63 转换为二进制数为:', bin(63 ))print ('十进制数 63 转换为八进制数为:', oct(63 ))print ('十进制数 63 转换为十六进制数为:', hex(63 )) # 输出结果: # 十进制数 63 转换为二进制数为: 0b111111 # 十进制数 63 转换为八进制数为: 0o77 # 十进制数 63 转换为十六进制数为: 0x3f a=0b111111 #a为二进制 b=bin(63 ) #b为从十进制63 转化而得的而得的二进制0b111111 c=int(0b111111 ) #c为从二进制0b111111 转化得到的十进制数 d=int(b,2 ) #注意b为字符串,字符串的转化为传入变量和需要转化成的进制数print (type(a))print (type(b))print (type(c))print (type(d)) #输出结果: # <class 'int'> # <class 'str'> 得到字符串 # <class 'int'> int转化就是整型 # <class 'int'> bin()转化后的二进制字符串通过int()转化为了10 进制数字print ('二进制数 0b111111 转换为十进制数为:', 0b111111 ) # print () 函数输出整数默认为十进制print ('二进制数 0b111111 转换为八进制数为:', oct(0b111111 ))print ('二进制数 0b111111 转换为十六进制数为:', hex(0b111111 )) #输出结果: # 二进制数 0b111111 转换为十进制数为: 63 # 二进制数 0b111111 转换为八进制数为: 0o77 # 二进制数 0b111111 转换为十六进制数为: 0x3f # 其他进制转换请自行尝试
如果数字太长,可以使用数字分隔符”_“,从右往左每三位添加一个,不会影响结果,方便阅读。
1 2 3 4 x =10_000_000_000_000_000print (x)
2.浮点型:float
浮点数数据类型,简称为浮点型,专用于存储浮点小数。
python中没有double浮点数类型,只有float,但是是双精度的。
float的表示可以是十进制表示形式或者指数形式。
十进制表示方法中,float类型里必须含有小数点,但可以没有整数部分或小数部分。
1 2 3 4 5 6 7 8 9 10 a = 3.14 b = 3. c = .14 print (a," " ,type (a))print (b," " ,type (b))print (c," " ,type (c)) 运行结果:3.14 <class 'float' >3.0 <class 'float' >0.14 <class 'float' >
指数形式表示时,形式为aEn 或者aen 等价于a x 10n
a为尾数部分,是十进制数;n为指数部分,同为10进制数,而E或e是固定字符,表示分割尾数部分和指数部分。
值得一提的是,只要使用了指数形式来表示一个数,无论这个数的值如何,均为float类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a =314159.26e-5b =1.1e4c =3e9 #整数值,但是是浮点数d =9e0 #浮点数e =0e3 #0.0也是浮点数print (a," " ,type(a))print (b," " ,type(b))print (c," " ,type(c))print (d," " ,type(d))print (e," " ,type(e))
浮点数的范围极大,但是如果位数过多会导致输出可能舍去一部分数字,而数字值本身巨大时(不一定是位数多)直接采用科学计数法输出。
当然也可以直接使用格式化输出(此处略,有兴趣的可以自行测试)。
1 2 3 4 5 6 7 a =1.234567891011121314151617181920b =12345678910111213141516.171819print (a)print (b)
计算机以二进制存储小数部分,会导致误差。
和十进制中1/3此类的无穷小数类似,如1.68,0.3等都是二进制中的无穷小数,所以在某些情况下,原本看似正确的小数(这个其实是计算机对原数值进行推测而显得正确的)输出实际上会产生问题:
1 2 3 4 5 6 7 a = 1 + 0 .68 b =0 .1 +0 .1 +0 .1 print (a)print (b)
因此,如果需要判断两个浮点数是否相等/得到我们想要的正确值,往往需要进行取近似值的操作。
对于python来说,浮点数是64位的,54位存位数,10位存指数。我们可以不选择在54的范围内比较其正确与否,而是缩小比较位数范围,比如在8位以内比较是否相等。
1 2 3 4 5 6 7 8 9 10 11 12 a = 1 .68 b = 1 + 0 .68 print ("a={:.20}" .format(a)) #格式化输出print ("b={:.20}" .format(b))eps = 0 .00000001 if abs(a - b) < eps: #看看精度在0 .00000001 范围内是否相等 print ("a == b" )a =1 .6799999999999999378 b =1 .6800000000000001599 a == b
3.布尔型:bool
布尔数据类型,简称布尔型,实际上是int类的一个子类。
含有关键字True (表示真)和False (表示假)(注意要大写)
布尔型主要用于判断对错(True=1=正确,False=0=错误),布尔运算,来判断某个条件是否成立。
1 2 3 4 5 6 7 8 9 print(True ) # True 首字母要大写 print(False ) # False 首字母要大写 print(type(True )) # 查看 True 的类型 print(type(False )) # 查看 False 的类型 # 输出结果: # True # False # <class 'bool' > # <class 'bool' >
尽管bool类型只有True和False两个实例,但是任何对象都可以进行真假值的判断。
下面举一些特殊的例子
1 2 3 4 5 6 7 8 9 10 11 12 print (bool(1 ) ) #True print (bool(0 ) ) #False print (bool([]) ) #False print (bool(() )) #False print (bool({}) ) #FALSE print (bool(-1 ) ) #True print (bool('' ) ) #False print (bool("False" ) ) #True print (bool("True" ) ) #True print (bool(0.0 ) ) #False print (bool(1.0 ) ) #True print (bool(-0.0 ) ) #False
实际上,各种空的内容被判断为False,而非空内容被判断为True
数值类型中,只有0.0, -0.0和0是False
另外range(0) ,0j , None等也是False
布尔型参与的布尔运算中,使用的关联词是 and or not ,逻辑和一般逻辑运算相同。(不再详细介绍)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 print (True and True )print (True and False )print (False and True )print (False and False )print (True or True )print (True or False )print (False or True )print (False or False )print (not True )print (not False )
特殊类型:None
之所以放在这里,是因为None类型和布尔型的关系比较紧密。
None表示空,但是并不是空字符串、空列表等等,也不等于False(当然在条件判断中if None被认为是False),而是一个特殊的值,表示的是没有值,也就是空值,属于特殊类型NoneType,而且None是这个类型的唯一值。
None作用和其他语言中的Null,nil或者undefined类似,不过None可以赋给任何一个变量。
None实际上就是无返回值的实际返回值。
不管变量是什么值(包括空列表、空字符串等等),除非变量就是None,否则和None作相等的布尔运算时始终为False。
对于not 变量,如果变量就是None,not None被认为是True。因此,判定变量空操作时,比较建议写if not 变量
此时不论是None还是其他空值,均返回True。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 a=None b = False c = [] d="" print (type (a)) print (bool (None )) if a==b or a==c or a==d: print ("Y" )else : print ("N" )if b is None or c is None or d is None : print ("Y" )else : print ("N" )
4.复数类型:complex
复数数据类型,简称复数类型,和其他语言不同,python中复数类型是内置类型,是数字类型的一部分,支持直接书写,不依赖其他库。
复数由实部和虚部组成,虚部带有后缀J/j ,且实部和虚部的数值均为浮点数。
具体形式为 a+bj / a+bJ ,a为实部,b为虚部。
1 2 3 4 5 complex1 =10+5jcomplex2 =10-5j #可以是-号print (complex1," " ,type(complex1))
python支持从复数中提取实部和虚部:
1 2 3 4 5 6 7 8 complex1 =123+321jr =complex1.reali =complex1.imagprint (r," " ,type(r))print (i," " ,type(i))
复数的计算:相信能看到这篇博客的你应该不能不会复数的计算😉,我就不写啦,自己去试试呗~