第一部分 数字类型
1.1 数字类型的组成
1.1.1 整数——不同进制的转换
- 默认输入十进制
- 二进制0b、八进制0o、十六进制0x
1
| 16 == 0b10000 == 0o20 == 0x10
|
True
1 2 3 4
| a = bin(16) b = oct(16) c = hex(16) print(a, b, c)
|
0b10000 0o20 0x10
注意:上述转换后结果为字符串类型
False
str
1 2 3 4 5 6
| a b c eval(a) eval(b) eval(c)
|
'0b10000'
'0o20'
'0x10'
16
16
16
1 2 3 4
| d = int(a, 2) e = int(b, 8) f = int(c, 16) print(d, e, f)
|
16 16 16
1.1.2 浮点数——不确定性
False
0.30000000000000004
计算机采用二进制小数来表示浮点数的小数部分
-
部分小数不能用二进制小数完全表示
二进制 |
十进制 |
0.00011001100110011001 |
0.09999942779541016 |
0.0011001100110011 |
0.1999969482421875 |
0.01001100110011001 |
0.29999542236328125 |
0.01100110011001101 |
0.40000152587890625 |
0.1 |
0.5 |
-
通常情况下不会影响计算精度
0.7999999999999999
0.30000000000000004
1 2 3 4
| b = round(a, 1) print(b) b == 0.3 round(0.033, 1)
|
0.3
True
0.0
round(v1,v2) v1是变量,v2是四舍五入至小数点后多少位
1.1.3 复数——a+bj
(3+4j)
(2+5j)
(2+1j)
1.2 数字运算操作符(a 操作符 b)
-0.8
-1
8
2
3
几点说明
- 整数与浮点数运算结果是浮点数
- 除法运算的结果是浮点数
2.5
0.4
2.0
1.3 数字运算操作函数 function(x, …)
5
5.0
32
2
1 2
| a = 1.618 print(round(a))
|
2
1.62
1.618
- 整数商和模运算 divmod(x,y)
- 等价于返回二元元组(x//y,x % y)
(2, 3)
1
| max(3, 2, 3, 6, 9, 4, 5)
|
9
1 2 3
| a = [3, 2, 3, 6, 9, 4, 5] print("max:", max(a)) print("min:", min(a))
|
max: 9
min: 2
15
1 2 3 4
| import math print(math.exp(1)) print(math.log2(2)) print(math.sqrt(4))
|
2.718281828459045
1.0
2.0
1 2 3 4 5
| import numpy as np a = [1, 2, 3, 4, 5] print(np.mean(a)) print(np.median(a)) print(np.std(a))
|
3.0
3.0
1.4142135623730951
第二部分 字符串类型
2.1 字符串的表达
1 2
| print("Python") print('Python')
|
Python
Python
双中有单
1
| print("I'm 18 years old")
|
I'm 18 years old
单中有双
1
| print('"Python" is good')
|
"Python" is good
双中有双,单中有单——转义符 \
1 2
| print("\"Python\" is good")
|
"Python" is good
转义符可以用来换行继续输入
1 2 3 4
| s = "py\ thon" print(s)
|
python
2.2 字符串的性质
2.2.1 字符串的索引
1
| s = "My name is Peppa Pig"
|
变量名[位置编号]
- 正向索引——从零开始递增
- 位置编号不能超过字符串的长度
1 2 3
| print(s[0]) print(s[2]) print(s[5])
|
M
m
1
| s = "My name is Peppa Pig"
|
1 2 3
| print(s[-1]) print(s[-3]) print(s[-5])
|
g
P
a
索引只能获得一个字符,如何获得多个字符?
2.2.2 字符串的切片
变量名[开始位置:结束位置:切片间隔]
- 切片间隔如不设置默认为1,可省略
- 切片范围不包含结束位置
1 2
| s = "Python" print(s[0:3:1])
|
Pyt
Pyt
Pt
- 起始位置是0 可以省略
- 结束位置省略,代表可以取到最后一个字符
- 可以使用反向索引
1 2
| s = "Python" print(s[0:6])
|
Python
Python
Python
Python
反向切片
- 起始位置是-1也可以省略
- 结束位置省略,代表可以取到第一个字符
1 2
| s = "123456789" print(s[-1:-10:-1])
|
987654321
987654321
987654321
4321
2.3 字符串操作符
2.3.1 字符串的拼接
1 2 3
| a = "I love " b = "my wife " a+b
|
'I love my wife '
2.3.2 字符串的成倍复制
1 2 3
| c = a+b print(c*3) print(3*c)
|
I love my wife I love my wife I love my wife
I love my wife I love my wife I love my wife
2.2.3 成员运算
- 子集in全集 任何一个连续的切片都是原字符串的子集
1 2 3
| folk_singers = "Peter, Paul and Mary" "Peter" in folk_singers ' a' in folk_singers
|
True
True
False
1 2
| for s in "Python": print(s)
|
P
y
t
h
o
n
2.4 字符串处理函数
2.4.1 字符串的长度
6
2.4.2 字符编码
将中文字库,英文字母、数字、特殊字符等转化成计算机可识别的二进制数
- 每个单一字符对应一个唯一的互不重复的二进制编码
- Python 中使用的是Unicode编码
将字符转化为Unicode码——ord(字符)
1 2 3 4 5
| print(ord("1")) print(ord("a")) print(ord("*")) print(ord("中")) print(ord("国"))
|
49
97
42
20013
22269
将Unicode码转化为字符——chr(Unicode码)
1 2 3 4
| print(chr(1010)) print(chr(10000)) print(chr(12345)) print(chr(23456))
|
ϲ
✐
〹
宠
2.5 字符串的处理方法
2.5.1 字符串的分割——字符串.split(分割字符)
上述特性适合以下所有字符串处理方法
1 2 3 4
| languages = "Python C C++ Java PHP R" languages_list = languages.split(" ") print(languages_list) print(languages)
|
['Python', 'C', 'C++', 'Java', 'PHP', 'R']
Python C C++ Java PHP R
2.5.2 字符串的聚合——“聚合字符”.join(可迭代数据类型)
1 2 3
| s = "12345" s_join = ",".join(s) s_join
|
'1,2,3,4,5'
1 2 3
| s = ["1", "2", "3", "4", "5"] "*".join(s)
|
'1*2*3*4*5'
2.5.3 删除两端特定字符——字符串.strip(删除字符)
- strip从两侧开始搜索,遇到指定字符执行删除,遇到非指定字符,搜索停止
- 类似的还有左删除lstrip和右删除rstrip
1 2 3 4 5
| s = " I have many blanks " print(s.strip(" ")) print(s.lstrip(" ")) print(s.rstrip(" ")) print(s)
|
I have many blanks
I have many blanks
I have many blanks
I have many blanks
2.5.4 字符串的替换——字符串.replace(“被替换”,“替换成”)
1 2 3
| s = "Python is coming" s1 = s.replace("Python","Py") print(s1)
|
Py is coming
2.5.5 字符串统计——字符串.count(“待统计字符串”)
1 2 3
| s = "Python is an excellent language" print("an:", s.count("an")) print("e:", s.count("e"))
|
an: 2
e: 4
2.3.6 字符串字母大小写
'PYTHON'
1 2
| print(s.lower()) print(s)
|
python
Python
'Python'
第三部分 布尔类型 TRUE or False
3.1 逻辑运算的结果
1 2 3 4
| a = 10 print(a > 8) print(a == 12) print(a < 5)
|
True
False
False
1 2
| print(any([False,1,0,None])) print(all([False,1,0,None]))
|
True
False
3.2 指示条件
1 2 3 4 5 6 7 8 9 10
| n = 2800 while True: m = eval(input("请输入一个正整数:")) if m == n: print("你猜对啦") break elif m > n: print("太大了") else: print("太小了")
|
请输入一个正整数:40
太小了
请输入一个正整数:60
太小了
请输入一个正整数:1000
太小了
请输入一个正整数:28001
太大了
请输入一个正整数:2800
你猜对啦
3.3 作为掩码
1 2 3 4
| import numpy as np x = np.array([[1, 3, 2, 5, 7]]) print(x > 3) x[x > 3]
|
[[False False False True True]]
array([5, 7])
第四部分 类型判别及类型转换
4.1 类型判别
1 2 3 4
| age = 20 name = "Ada" print(type(age)) print(type(name))
|
<class 'int'>
<class 'str'>
- isinstance(变量,预判类型) 承认继承
- 变量类型是预判类型的子类型,则为真,否则为假
1
| print(isinstance(age, int))
|
True
1 2
| print(isinstance(age, object)) print(isinstance(name, object))
|
True
True
字符串.isdigit()字符是否只有数字组成
True
False
字符串.isalpha()字符是否只有字母组成
True
False
字符串.isalnum()字符是否只有数字和字母组成
True
4.2 类型转换
1 2
| age = 20 print("My age is "+str(age))
|
My age is 20
- 仅有数字组成的字符串转数字 int() float() eval()
20
20.0
10.1
20
10.1
eval()负责把字符串转化为最合适的数据类型,而int()和float()可以把除了字符以外的转化为整型和浮点型