Python基本数据类型
Python的基本数据类型有:
Number(数字)
、String(字符串)
、bool(布尔类型)
、List(列表)
、Tuple(元组)
、Set(集合)
、Dictionary(字典)
。
Python3 的六个标准数据类型中:
- 不可变数据(3 个):
Number(数字)、String(字符串)、Tuple(元组)
; - 可变数据(3 个):
List(列表)、Dictionary(字典)、Set(集合)
;
数字类型包括:整数类型、浮点数类型、布尔类型、复数类型
整数类型:int。其他语言有:int,long,short。
浮点数类型:float。其他语言有:float(单精度),double(双精度)。python的float类型可以表示任意精度。
复数类型:complex。
布尔类型:bool。(表示真和假:True,False)(Python中没有0和1,只有True和False),开头要大写才有用,不然会报错
布尔类型详解
int(True)----->1;int(False)----->0 (所以布尔类型归为数字类型)
bool(1)----->True;bool(0)----->False
注:bool(非零数字,包括负数,小数,不管进制)----->True
bool(“1,2,3”)----->True
bool(“”)----->False(空字符串); [ ]空列表,{ }空字典,(None),都是False
字符串类型详解
‘let’s go’----->报错
'let\'s go'----->let's go(用转义字符\)
""let's go""----->let's go(用双引号或三引号)
‘’'hello
hello
hello’‘’----->hello \nhello \nhello
‘’‘hello \nhello \nhello’‘’----->hello \nhello \nhello(三引号并不能起到转义字符的作用,只是表示多行字符串)
那有没有办法能识别转义字符呢?
用print函数
print('''hello \nhello \nhello''')----->hello
hello
hello
#三引号换成单引号也是一样的
问题:print('hello \nhello \nhello')
有没有办法把转义字符也一并打印到结果中呢?
-
方法一:用
r' '
表示原始字符串print(r'hello \nhello \nhello')----->hello \nhello \nhello #r''表示原始字符串,不会被转义
-
方法二:用
转义字符\
再把原来的转义字符\转义掉print('hello \\nhello \\nhello')
字符串的格式化
字符串的格式化包括:填充、对齐、宽度、精度、千位分隔符、类型、转换符
- 填充:用
{:}
表示,用指定的字符在左侧填充 - 对齐:用
{:>}
表示,用指定的字符在右侧填充 - 宽度:用
{:d}
表示,用指定的字符在左侧填充,如果字符串长度大于指定的宽度,则截取字符串 - 精度:用
{:.2f}
表示,用指定的字符在左侧填充,如果字符串长度大于指定的精度,则截取字符串 - 千位分隔符:用
{:,}
表示,用逗号作为千位分隔符 - 类型:用
{:b
}`表示,用指定的字符在左侧填充,如果字符串长度大于指定的宽度,则截取字符串 - 转换符:用
{:a}
表示,用指定的字符在左侧填充,如果字符串长度大于指定的宽度,则截取字符串
type()函数
可以返回变量或者值的类型.
type(1)----->int
type(1+1)----->int
(乘法也一样)type(1*1)----->int
type(1.0)----->float
type(1+1.0)----->float
(乘法也一样)type(1*1.0)----->float
但除法有差异:type(2/2)----->float,结果为1.0(牢记) "/"为浮点数除法
type(2//2)----->int,结果为1 "//"为整数除法
type(1//2)----->int,结果为0
type("True")----->bool
type(1+2j)----->complex
type("123")----->str
此外还可以用 isinstance()函数
来判断
输出的值是bool类型
a = 111
isinstance(a, int)
输出:True
还可以是 isinstance(a,(int,str,float))
#满足里面的任意一种就会返回True,否则就返回False
isinstance 和 type 的区别在于:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
十进制,二进制,八进制,十六进制
十进制:0,1,2,3,4,5,6,7,8,9----满10进1,也就是到9以后加1,进一位变0,前面加一位变10
二进制:0,1----满2进1,也就是到1后加1,进一位变0,前面加一位,变10
八进制:0,1,2,3,4,5,6,7----满8进1,也就是到7以后加1,进一位变0,前面加一位,变10
十六进制:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)----满16进1,也就是到F后加1,进一位变0,前面加一位,变10
问题:python如何区分不同进制的“10”?
答:(python默认以10进制显示)比如:键入0b11,回车,输出3
十进制:10 ;
二进制:0b10(表示十进制的2),0b11(表示3);
八进制:0o10(表示8),0o11(表示9);
十六进制:0x10(表示16),0x1F(表示31)
python转换数字进制的函数
bin()函数
----把其他进制转换为二进制:bin(10)----->0b1010 ; bin(0o7)----->0b111 ; bin(0xE)----->0b1110
int()函数
----把其他进制转换为十进制
oct()函数
----把其他进制转换为八进制
hex()函数
----把其他进制转换为十六进制