第一部分 数字类型
数字类型的组成
整数–不用进制的转换
- 默认输入十进制
- 二进制0b, 八进制0o, 十六进制0x
16 == 0b10000 == 0o20 == 0x10
True
- 十进制和其他进制的转换
- 注意:转换结果为str类型
a = bin(16) #转二进制
b = oct(16) #转八进制
c = hex(16) #转十六进制
print(a, b, c)
type(a)
0b10000 0o20 0x10
str
- 其他进制转换十进制
d = int(a, 2)
e = int(b, 8)
f = int(c, 16)
print(d, e, f)
type(d)
16 16 16
int
浮点数—不确定性
- 不确定小数问题
(0.1 + 0.2 ) == 0.3
False
0.1 + 0.2
0.30000000000000004
** 计算机采用二进制小数表示浮点数的小数部分 **
-
部分小数不能用二进制小数完全表示
-
通常不会影响计算精度
0.1 + 0.7
0.7999999999999999
- 四舍五入得到精确解
a = 3*0.1
print(a)
0.30000000000000004
b = round(a, 1) # 将a保留一位小数 进行四舍五入
print(b)
b == 0.3
0.3
True
复数---- a+bj
- 大写J或者小写j均可
3+4j
type(3+4j)
数字运算操作符 (a 操作符 b)
- 加减乘除 + - * /
(1 + 3 - 4*2)/5
-0.8
- 取反 -
x = 1
-x
-1
- 乘方运算
2 ** 3
8
- 整数商 // 和模运算%
13 // 5 #整数商 x/y向下取整
2
13 % 5 #模运算 余数
3
说明
- 整数与浮点数运算结果是浮点数
- 除法运算结果是浮点数
1 + 1.5
2.5
2 / 5
0.4
8 / 4
2.0
数字运算操作函数 function(x, )
- 求绝对值 abs()
abs(-5)
5
abs(3 + 4j) #对复数a+bj 执行的是求模运算 (a^2+b^2)^0.5
5.0
- 幂次方 pow(x,n)
pow (2, 5) # 2 ** 5
32
pow(2, 5, 3) # 2^5 % 3
2
- 四舍五入 round(x, n)
a = 0.618
print(round(a))
print(round(a, 2))
print(round(a, 5))
1
0.62
0.618
- 整数商和模运算 divmod(x, y)
- 等价于返回二元组(x//y, x % y)
divmod(13, 5)
(2, 3)
- 序列最大/最小值 max() min()
max(2, 5 ,7 ,1 ,2 ,3 ,5 ,12)
12
min(2, 5 ,7 ,1 ,2 ,3 ,5 ,12)
1
- 求和 sum(x)
sum([1,2,3,4,5,8,6])
29
sum((1,5,8,5,5,2,2,1))
29
sum({1,2,3,4,4,4,4})
10
- 借助科学计算库 math\scipy\numpy
import math
a = math.exp(1) #指数运算
b = math.log2(2) #对数运算
c = math.sqrt(4) #开平方运算
print(a, b, c)
2.718281828459045 1.0 2.0
import numpy as np
a = [1, 2, 3, 4, 5]
mean = np.mean(a) #求平均值
median = np.median(a) #求中位数
std = np.std(a) #求标准差
print(mean, median, std)
3.0 3.0 1.4142135623730951
第二部分 字符串类型
字符串的表达
- 用""或’'括起来的任意字符
print("Python")
print('Python')
Python
Python
- 字符串中有双引号或单引号的情况
print("hello 'world") #有单用双
print('hello "world') #有双用单
hello 'world
hello "world
- 转义字符
print("\"Python\" is good")
"Python " is good
- 转义字符 换行输入
s = "str\
saa"
print(s)
strsaa
字符串的性质
字符串的索引
s = "My name sis Python user"
print(s)
My name sis Python user
变量名[位置编号]
- 正向索引—从0开始递增
- 位置编号不能超过字符串长度
print(s[0])
print(s[2])
print(s[5])
M
m
- 反向索引 -1开始递减
print(s[-1])
print(s[-3])
r
s
字符串的切片
变量名[开始位置: 结束位置: 切片间隔]
- 切片间隔默认为1
- 切片范围不包含结束位置
s = "Python"
print(s[0:3:1])
print(s[0:3:2])
print(s[0:3])
Pyt
Pt
Pyt
- 起始位置是0, 可以省略
- 结束位置省略, 代表可以取到最后一个字符
- 可以使用反向索引
s= "Python"
print(s[0:6])
print(s[:6])
print(s[:])
print(s[-6:])
Python
Python
Python
- 反向切片
- 起始位置是-1 可以省略
- 结束位置省略, 代表可以渠道第一个字符
s = "123456789"
print(s[-1:-10:-1])
print(s[:-10:-1])
print(s[::-1])
987654321
987654321
987654321
字符串操作符
字符串的拼接
- 字符串1 + 字符串2
str1 = "Hello "
str2 = "world "
str1 + str2
'Hello world '
字符串的复制
s = str1 + str2
print(s * 3)
print(3 * s)
Hello world Hello world Hello world
Hello world Hello world Hello world
成员运算
- 子集 in 全集 任何一个连续的切片都是原字符串的子集
folk_singers = "My name is Zhang san"
"Zhang san" in folk_singers
True
- 遍历字符串字符 for 字符 in 字符串
for c in "Python":
print(c)
P
y
t
h
o
n
字符串处理函数
字符串的长度
s = "Python"
len(s)
6
字符编码
将中文字库, 英文, 数字, 特殊字符等转化成计算机可是被的二进制数
-
每一个单一字符对应一个唯一的不重复的二进制编码
-
Python 中使用的是Unicode编码
-
将字符转化为Unicode码 ---- ord(字符)
for i in ("1", "a", "*", "中"):
print(ord(i))
49
97
42
20013
- 将Unicode码转为字符 —chr(Unicode码)
print(chr(10000))
print(chr(12345))
print(chr(20013))
print(chr(12585))
✐
〹
中
ㄩ
字符串的处理方法
字符串的分割 ----字符串.split(分割字符)
- 返回一个列表
- 源字符串不变
language = "Python C C++ HTML PHP R Java"
language_list = language.split(" ")
print(language_list)
print(language)
['Python', 'C', 'C++', 'HTML', 'PHP', 'R', 'Java']
Python C C++ HTML PHP R Java
字符串的聚合 — “聚合字符”.join(可迭代数据类型)
- 可迭代类型 如: 字符串 列表
s = "123456"
s_join = ",".join(s)
s_join
'1,2,3,4,5,6'
- 序列类型必须是字符类型
s = ["1", "2", "3", "4", "5"]
"*".join(s)
120
删除两端特定字符 — 字符串.strip(删除字符)
- strip从两侧开始搜索, 遇到指定字符执行删除, 遇到非指定字符, 搜索停止
- 左删除lstrip 右删除rstrip
s = "*******Pyhon*****"
print(s.strip("*"))
print(s.lstrip("*"))
print(s.rstrip("*"))
Pyhon
Pyhon*****
*******Pyhon
字符串的替换 -----字符串.replace(“被替换”,“替换成”)
s = "---Python---C++---"
s1 = s.replace("-", "*")
s1
'***Python***C++***'
字符串统计 -----字符串.count(“待统计字符串”)
s = "My is is jmsanf"
print("is:",s.count("is"))
print("s:",s.count("s"))
is: 2
s: 3
字符串字母大小写
- 字符串.upper() 字母全部大写
- 字符串.lower() 字母全部小写
- 字符串.title() 首字母大写
Hs = "pyHonp"
print(s.upper())
print(s.lower())
print(s.title())
PYTHON
python
Python
第三部分 布尔类型 True or False
逻辑运算的结果
a = 10
print(a > 8)
print(a < 8)
print(a == 5)
True
False
False
- any() all()
print(any([False, 1, 0, None])) # 任意非0就是True
print(all([False, 1, 0, None]))
True
False
指示条件
n = 28
while True:
m = eval(input("please input number: "))
if m == n:
print("bingo")
break
elif m > n:
print("is big")
else:
print("is small")
please input number: 12
is small
please input number: 36
is big
please input number: 28
bingo
作为掩码
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])
第四部分 类型判别及类型转换
类型判别
- type(变量)
print(type(a))
print(type(12)) ##int
print(type("5a")) #str
print(type(True)) #bool
print(type(["s", "a", "j", "n"])) #list
print(type((1, 2, 3))) #tuple
print(type({1, 2, 3, 5})) #set
print(type({"name": "张三", "性别": "女", "年龄": "18"})) #dict
<class 'int'>
<class 'int'>
<class 'str'>
<class 'bool'>
<class 'list'>
<class 'tuple'>
<class 'set'>
<class 'dict'>
- isinstance(变量, 预判类型)
- 变量类型是预判类型的子类型,则为真,否则为假
age = 20
name ="Ada"
print(isinstance(age, int))
print(isinstance(age, object))
print(isinstance(name, object))
True
True
True
- 字符串检查方法
字符串.isdigit()是否只有数字组成
s = "123456"
s2 = "a123"
print(s.isdigit())
print(s2.isdigit())
True
False
字符串.isalpha()是否只有字母组成
s = "abc"
s2 = "a123"
print(s.isalpha())
print(s2.isalpha())
True
False
字符串.isalnum()是否只有数字和字母组成
s = "abc###"
s2 = "a123"
print(s.isalnum())
print(s2.isalnum())
False
True
类型转换
- 数字类型转字符串 str(数字类型)
age = 20
print("is " + str(age))
is 20
- 仅有数字组成的字符串转数字 int() float() eval()
s1 = "20"
s2 = "10.2"
int(s1)
20
20
float(s2)
10.2
eval(s1)
20
练习
x = 3.14
print(round(x,2),round(x))
3.14 3
s ="python is a good language"
print(s[0:6:1])
python
print(s[-26:-18])
python
print(s.title())
Python Is A Good Language
print(s.count("o"))
3
print(s.replace("python","C++"))
C++ is a good language
s_list = s.split(" ")
s_list
['python', 'is', 'a', 'good', 'language']
"*".join(s_list)
'python*is*a*good*language'
b = bin(255)
o = oct(255)
h = hex(255)
print(b, o, h)
0b11111111 0o377 0xff
print(int(b, 2), int(o, 8), int(h, 16))
255 255 255