Python基础数据类型(str、int、bool)


作者Lou Xiao创建时间2020-04-20 14:35:00更新时间2020-05-09 17:22:00

Python的内置类型

Python作为高级的脚本程序设计语言,提供丰富而强悍的数据类型,极大的简化了程序设计的难度。

程序设计角度来做划分,仅做参考: Python官方文档更详细的划分 👉 [Python文档]

  • 基础类型(最小的单位,不能在拆分)
    str、int、float、bool;
  • 组合类型(包含其他数据类型,可以嵌套N层)
    list、tuple、dict、set;
  • 序列类型(可以按顺序一个接一个列出)
    str、list、tuple、range。

NoneType

用来表示,什么都没有。 只有一个值 None

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 判断是否是None
2 print(None is None) # True
3 print(None is not None) # False
4 print(bool(None)) # False

boolean(布尔)

用来表示真假的类型,只有两个取值:True(真),False(假)。
内部表示为一个字节。

支持的运算:与(and),或(or),非(not)。

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 print(True and False) # False
2 print(True or False) # True
3 print(not False) # True

优先级顺序: not > and > or。 如果记不住,可以加上括号,括号的优先级最高。 👉 [运算符优先级]

str、int、float比较运算会得到bool值

小于(<), 小于等于(<=), 等于(==), 大于等于(>=), 不等于(!=)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 print(1 > 2) # False
2 print(1 <= 2) # True
3 print(1 == 2) # False
4 print(1 != 2) # True
5 print("Alice" <= "Bot") # True
6 print("Alice" != "") # True

数字

[d1] 整数: int

数学概念上的整数
注意:与其他程序设计语言不同之处是:int可以表示 0 到 很大很大(视计算机内存而定) 的整数。

整数就是 0,1,2,3 ...

表示方法

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 1 十进制
2 a = 554445
3 # 十进制(用\_做每3位分割)
4 a = 555_445
5
6 # 2 八进制
7 a = 0o1234
8
9 # 3 16进制
10 a = 0x12abf
11
12 # 4 二进制
13 a = 0b010010

支持的运算

支持的运算:加(+),减(-),乘(*),除法(/),整除(//),取余(%)

❗ 除法在Python3和Python2有差别。

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 print( 8 + 5) # 13
2 print( 8 - 5) # 3
3 print( 8 * 5) # 40
4 print( 8 / 5) # 1.6
5 print( 8 // 5) # 1 整除,求商=1
6 print( 8 % 5) # 8\/;5\=;1 余数是 3

[d2] 小数: float (别称: 浮点数)

数学概念上的小数,但是有效范围从 $ 2.225 \times 10^{-308} $ 到 $ 1.798 \times 10^{308} $ 。

表示方法

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 1. 小数表示
2 1.23
3 # 2. 科学计数法
4 1e-6

只持的运算

支持的运算:加(+),减(-),乘(*),除法(/)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 print( 8.0 + 5.0) # 16.0
2 print( 8.0 - 5.0) # 3.0
3 print( 8.0 * 5.0) # 40
4 print( 8.0 / 5.0) # 1.6
5 print(1.0 / 49 * 49 ) # 为什么不等于1.0? 浮点计算有精度损失。

[d3] 复数: complex

数学概念上的复数 complex(float,float)

表示方法

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 1
2 print((8+5j)) # 即 8 + 5j ,实部=8,虚部=5。
3 # 2
4 print(complex(8, 5)) # 即 8 + 5j ,实部=8,虚部=5。

只持的运算

支持的运算:加(+),减(-),乘(*),除法(/)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # ----
2 print(complex(8, 5) + complex(3, 7)) # 11+12j
3 print(complex(8, 5) - complex(3, 7)) # 5-2j
4 print(complex(8, 5) * complex(3, 7)) # -11+71j
5 print(complex(8, 5) / complex(3, 7)) # (1.017241379310345-0.7068965517241381j)
6 print((8+5j)+(3+7j))
7 # ----
8 print(complex(8, 5).real) # 取实部,=8
9 print(complex(8, 5).imag) # 取虚部,=5
10 print(abs(complex(8, 5))) # 取模量,=9.433981132056603

[d4] 相关数学函数

math模块提供了float运算函数. 👉 [math];
cmath模块提供了complex运算函数. 👉 [cmath];

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 import math
2 print(math.sin(0.5 * math.pi)) # sin(0.5 * pi) = 1.0
运算说明
maxmax(1,2)=2
minmin(1,2)=1
abs求绝对值:abs(-2)=2
pow求指数: pow(2,5) = 32 即 2的5次幂
**求指数: 2**5 = 32 即 2的5次幂
divmod求商和余数: divmod(8,5) = (1,3); 商=1,余数=3

字符串 str

str是immutable(不能改变数值的),如果操作会改变数值,那么返回一个新的str,原来的保持不变。

字符串的表示方式(5种)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 1 一个单引号
2 s1 = 'hello, world!'
3 # 2 一个双引号
4 s2 = "hello, world!"
5 # 3 三个双引号,用来表示多行文本
6 s3 = """
7 hello,
8 world!
9 """
10 # 4 三个单引号(一般不推荐用)
11 s4 = '''
12 hello,
13 world!
14 '''
15 # 5 原始字符,不要转义序列
16 s5 = "hello, \n world!"
17 s6 = r"hello, \n world!"
18 # 查看效果
19 print(s1)
20 print(s2)
21 print(s3)
22 print(s4)
23 print("s5 is : %s" % s5)
24 print("s6 is : %s" % s6)
1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 hello, world!
2 hello, world!
3
4 hello,
5 world!
6
7
8 hello,
9 world!
10
11 s5 is : hello,
12 world!
13 s6 is : hello, \n world!

操作方法

字符串的操作有很多, 👉 [Text Sequence Type]
下面就其中某些举例

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 获取字符串的长度
2 print(len("hello, world!"))
3 # 拼接
4 s1 = "hello"
5 s2 = "world"
6 print(s1 + s2)
7 # 乘法
8 print("*" * 20)
9 # 转成小写字母
10 s = "Hello, World!"
11 print(s.lower())
12 # 转换成大写字母
13 s = "Hello, World!"
14 print(s.upper())
15 # 是否以某某开头
16 print(s.startswith("Hello"))
17 # 是否以某某结束
18 print(s.endswith("World!"))
19 # 替换字符串,感受str的immutable特性
20 s1 = "Hello, World!"
21 s2 = s.replace('o', 'OOO')
22 print("s1 is : %s" % s1)
23 print("s2 is : %s" % s2)
24 # 当然支持中文
25 s3 = "我不会中文!"
26 s4 = s1.replace('不会', '精通')
27 print("s3 is : %s" % s3)
28 print("s4 is : %s" % s4)
1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 13
2 helloworld
3 ********************
4 hello, world!
5 HELLO, WORLD!
6 True
7 True
8 s1 is : Hello, World!
9 s2 is : HellOOO, WOOOrld!
10 s3 is : 我不会中文!
11 s4 is : Hello, World!

字符串的格式化

Python的字符串格式化能力超强,生成大段文本特别方便,远远优于字符串的拼接(+)。

举个例子,展示以上几个类型的格式化, 👉 [Format Specification]

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # ① 使用 % ,古老的格式化方式
2 s1 = "My name is %s, and I'm %02d years old, and my weight is %0.3fKg . " % ("black", 2, 3.141516)
3 # ② 使用format()函数
4 tpl = "My name is {}, and I'm {:02d} years old, and my weight is {:0.3f}Kg . "
5 s2 = tpl.format("black", 2, 3.141516)
6 # ③ 使用format()函数,指定名称
7 tpl = "My name is {name}, and I'm {age:02d} years old, and my weight is {weight:0.3f}Kg . "
8 s3 = tpl.format(name="black", age=2, weight=3.141516)
9 # print
10 print(s1)
11 print(s2)
12 print(s3)
1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 My name is black, and I'm 02 years old, and my weight is 3.142Kg .
2 My name is black, and I'm 02 years old, and my weight is 3.142Kg .
3 My name is black, and I'm 02 years old, and my weight is 3.142Kg .

类型转换

FromTo方法举例
intboolbool()bool(13) = True
bool(0) = False
floatboolbool()bool(1.0) = True
bool(0.0) = False
bool(float("NaN")) = True
bool(float("inf")) = True
strboolbool()bool("") = False
bool("0") = True
boolintint()
自动转转

int(True) + 2 = 3
int(False) + 2 = 0
True + 2 = 3
False + 2 = 2
floatintint()
round()

int(3.51415) = 3
round(3.51415) = 4
strintint(str,base)
int("315",10) = 315
int("315",8) = 205
int("315",16) = 789
int("0101",2) = 5
boolfloatfloat()
自动转转

True + 2.0 = 3.0
False + 2.0 = 2.0
float(True) + 2 = 3.0
float(False) + 2 = 2.0
intfloatfloat()
自动转转
1 + 2.0 = 3
float(1) + 2 = 3.0
strfloatfloat()float("3.0") + 2.0 = 5.0
boolstrstr()
格式方法
str(True) = "True"
str(False) = "False"
intstrstr()
格式方法
str(True) = "True"
str(False) = "False"
floatstrstr()
格式方法
str(1.2) = "1.2"
"%0.3f" % 3.141592653589793 = "3.142"

课后练习

文章目录