Python基础数据类型(str、int、bool)
Python的内置类型
Python作为高级的脚本程序设计语言,提供丰富而强悍的数据类型,极大的简化了程序设计的难度。
从程序设计角度来做划分,仅做参考: Python官方文档更详细的划分 👉 [Python文档]
- 基础类型(最小的单位,不能在拆分)
str、int、float、bool; - 组合类型(包含其他数据类型,可以嵌套N层)
list、tuple、dict、set; - 序列类型(可以按顺序一个接一个列出)
str、list、tuple、range。
NoneType
用来表示无,什么都没有。 只有一个值 None
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
print(True and False) # False
2
print(True or False) # True
3
print(not False) # True
优先级顺序: not > and > or。 如果记不住,可以加上括号,括号的优先级最高。 👉 [运算符优先级]
str、int、float比较运算会得到bool值
小于(<), 小于等于(<=), 等于(==), 大于等于(>=), 不等于(!=)
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
# 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
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
# 1. 小数表示
2
1.23
3
# 2. 科学计数法
4
1e-6
只持的运算
支持的运算:加(+),减(-),乘(*),除法(/)
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
# 1
2
print((8+5j)) # 即 8 + 5j ,实部=8,虚部=5。
3
# 2
4
print(complex(8, 5)) # 即 8 + 5j ,实部=8,虚部=5。
只持的运算
支持的运算:加(+),减(-),乘(*),除法(/)
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
import math
2
print(math.sin(0.5 * math.pi)) # sin(0.5 * pi) = 1.0
运算 | 说明 |
---|---|
max | max(1,2)=2 |
min | min(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
# 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
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
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
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
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
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 .
类型转换
From | To | 方法 | 举例 |
---|---|---|---|
int | bool | bool() | bool(13) = True bool(0) = False |
float | bool | bool() | bool(1.0) = True bool(0.0) = False bool(float("NaN")) = True bool(float("inf")) = True |
str | bool | bool() | bool("") = False bool("0") = True |
bool | int | int() 自动转转 | int(True) + 2 = 3 int(False) + 2 = 0 True + 2 = 3 False + 2 = 2 |
float | int | int() round() | int(3.51415) = 3 round(3.51415) = 4 |
str | int | int(str,base) | int("315",10) = 315 int("315",8) = 205 int("315",16) = 789 int("0101",2) = 5 |
bool | float | float() 自动转转 | True + 2.0 = 3.0 False + 2.0 = 2.0 float(True) + 2 = 3.0 float(False) + 2 = 2.0 |
int | float | float() 自动转转 | 1 + 2.0 = 3 float(1) + 2 = 3.0 |
str | float | float() | float("3.0") + 2.0 = 5.0 |
bool | str | str() 格式方法 | str(True) = "True" str(False) = "False" |
int | str | str() 格式方法 | str(True) = "True" str(False) = "False" |
float | str | str() 格式方法 | str(1.2) = "1.2" "%0.3f" % 3.141592653589793 = "3.142" |
课后练习
- 运行并理解上述代码
- 阅读Python文档: