【python】
引言
第一章
1 基础知识
1.1 注解

单行注释 快捷键:ctrl + /
1.2 标识符
命名规则是Python中定义各种名字的时候的统一规范,具体如下:
- 由数字、字母、下划线组成
- 不能数字开头
- 不能使用内置关键字
- 严格区分大小写
命名习惯
- 大驼峰:即每个单词首字母都大写,例如:MyName。
- 小驼峰:第二个(含)以后的单词首字母大写,例如:myName。
- 下划线:例如:my_name。
1.3 变量
数据类型
- 数值
- 整型 int
- 浮点型 float
- 布尔
- 真 true
- 假 false
- 字符串 str
- 列表 list
- 元组 tuple
- 集合 set
- 字典 dict
检测数据类型方法 type() → 类似与java的 xxx.class
1.4 格式化符号
| 格式符号 | 转换说明 |
|---|---|
| %s | 字符串 |
| %d | 有符号的十进制整数 |
| %f | 浮点数 |
| %c | 字符 |
| %u | 无符号的十进制整数 |
| %o | 八进制整数 |
| %x | 十六进制整数(小写字母) |
| %X | 十六进制整数(大写字母) |
| %e | 科学计数法(小写'e') |
| %E | 科学计数法(大写'E') |
| %g | %f和%e的简写,根据数值大小自动选择%f或%e |
| %G | %f和%E的简写,根据数值大小自动选择%f或%E |
| %n | 计数器,不输出,但更新当前已输出的字符数量 |
| %% | 字面量的百分号(%) |
1.5 转义字符
\n:换行。\t:制表符,一个tab键(4个空格)的距离。
1.6 键盘输入
input("信息")
等待输入变量
java中类似写法
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
1.7 转换数据类型
| 函数 | 说明 |
|---|---|
int(x [,base ]) |
将x转换为一个整数,可选base为基数(2-36) |
float(x) |
将x转换为一个浮点数 |
complex(real [,imag ]) |
创建一个复数,real为实部,imag为虚部(可选) |
str(x) |
将对象x转换为字符串 |
repr(x) |
将对象x转换为表达式字符串,通常用于调试 |
eval(str) |
计算字符串中的有效Python表达式,并返回结果 |
tuple(s) |
将序列s转换为一个元组 |
list(s) |
将序列s转换为一个列表 |
chr(x) |
将一个整数x转换为对应的Unicode字符 |
ord(x) |
将一个字符x转换为其ASCII或Unicode整数值 |
hex(x) |
将一个整数x转换为一个十六进制字符串 |
oct(x) |
将一个整数x转换为一个八进制字符串 |
bin(x) |
将一个整数x转换为一个二进制字符串 |
1.8 运算符
1.8.1 算数运算符
这里列出比较特殊的
| 运算符 | 描述 | 实例 |
|---|---|---|
/ |
除 | 10 / 2 = 5 |
// |
整除 | 9 // 4 = 2 |
% |
取余 | 9 % 4 = 1 |
** |
指数 | 2 ** 3 = 2 * 2 * 2 = 8 |
1.8.2 逻辑运算符
| 运算符 | 逻辑表达式 | 描述 | 实例 |
|---|---|---|---|
| and | x and y | 布尔"与":如果 x 为 False,则 x and y 返回 False,否则它返回 y 的值。 | True and False,返回 False。 |
| or | x or y | 布尔"或":如果 x 是 True,则返回 True,否则返回 y 的值。 | False or True,返回 True。 |
| not | not x | 布尔"非":如果 x 为 True,返回 False。如果 x 为 False,返回 True。 | not True 返回 False,not False 返回 True |
2 基础语法
2.1 判断语句
if 条件:
条件成立执行的代码1
条件成立执行的代码2
......
#---------------------
if 条件:
条件成立执行的代码1
条件成立执行的代码2
......
else:
条件不成立执行的代码1
条件不成立执行的代码2
......
#---------------------
if 条件:
条件成立执行的代码1
条件成立执行的代码2
......
elif 条件:
条件成立执行的代码1
条件成立执行的代码2
......
else:
条件不成立执行的代码1
条件不成立执行的代码2
......
2.2 三目运算符
值1 if 条件 else 值2
2.3 循环
2.3.1 普通循环
while 条件:
条件成立重复执行的代码1
条件成立重复执行的代码2
......
#---------------------
# while循环嵌套
while 条件1:
条件1成立执行的代码
......
while 条件2:
条件2成立执行的代码
......
#---------------------
for 临时变量 in 序列:
重复执行的代码1
重复执行的代码2
......
#---------------------
2.3.2 结合
- 与else结合
while 条件:
条件成立重复执行的代码
else:
循环正常结束之后要执行的代码
#---------------------
for 临时变量 in 序列:
重复执行的代码
...
else:
循环正常结束之后要执行的代码
- 与break:终止循环不会执行else下方缩进的代码
- 与continue:退出循环的方式执行else下方缩进的代码
2.4 切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
- 不包含结束位置下标对应的数据, 正负整数均可
- 步长是选取间隔,正负整数均可,默认步长为1
name = "abcdefg"
print(name[2:5:1]) # cde
print(name[2:5]) # cde
print(name[:5]) # abcde
print(name[1:]) # bcdefg
print(name[:]) # abcdefg
print(name[::2]) # aceg
print(name[:-1]) # abcdef, 负1表示倒数第一个数据
print(name[-4:-1]) # def
print(name[::-1]) # gfedcba
2.5 字符串处理函数
replace():替换- 字符串序列.replace(旧子串, 新子串, 替换次数)
- 替换次数小于旧子串出现次数时,替换已经满次数,再遇到不会再替换
split():按照指定字符分割字符串- 字符串序列.split(分割字符, num)
- num表示的是分割字符出现的次数,即将来返回数据个数为num+1个
- num设置的效果,只有当num小于分割字符出现个数时会出现不同,如果已经分割num次(即出现num+1个子串),则再遇到分割字符也不会再分割。
join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串- 字符或子串.join(多字符串组成的序列)
capitalize():将字符串第一个字符转换成大写- 字符串.capitalize()
- `title()``:将字符串每个单词首字母转换成大写
- 字符串.title()
lower():将字符串中大写转小写- 字符串.lower()
upper():将字符串中小写转大写。- 字符串.upper()
2.6 字符串判断函数
startswith():检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查- 字符串序列.startswith(子串)
- 字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
endswith()::检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查- 字符串序列.endswith(子串)
- 字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False- 字符串.isalpha()
isdigit():如果字符串只包含数字则返回 True 否则返回 False- 字符串.isdigit()
isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False- 字符串.isalnum()
isspace():如果字符串中只包含空白,则返回 True,否则返回 False- 字符串.isspace()
2.7 列表
列表可以一次性存储多个数据,且可以为不同数据类型
2.7.1 基础函数
- index():返回指定数据所在位置的下标
- 列表序列.index(数据, 开始位置下标, 结束位置下标)
- count():统计指定数据在当前列表中出现的次数
- 列表序列.count()
- len():访问列表长度,即列表中数据的个数
- 列表序列.len()
2.7.2 判断
- in:判断指定数据在某个列表序列,如果在返回True,否则返回False
- '字符串' in 列表序列
- not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False
- '字符串' not in 列表序列
2.7.3 增删改
- append():列表结尾追加数据
- 列表序列.append(数据)
- extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
- 列表序列.extend(数据)
- 单个数据
#单个数据
name_list = ['Tom', 'Lily', 'Rose']
name_list.extend('xiaoming')
# 结果:['Tom', 'Lily', 'Rose', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']
#多个数据
name_list = ['Tom', 'Lily', 'Rose']
name_list.extend(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
- insert():指定位置新增数据
- 列表序列.insert(位置下标, 数据)
- del:删除
- del XX
- del 列表序列
- del 列表序列[index]
- pop():删除指定下标的数据(默认为最后一个),并返回该数据
- 列表序列.pop(下标)
- remove():移除列表中某个数据的第一个匹配项
- 列表序列.remove(数据)
- clear():清空列表
- reverse():逆置
- sort():排序
- 列表序列.sort( key=None, reverse=False)
- 注意:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)
- copy():复制
2.7.4 列表嵌套
list = [['x','x','x'],['y','y','y'],['z','z','z']]
list[2][1]
2.8 元组
- 一个元组可以存储多个数据,元组内的数据是不能修改的。
- 元组特点:定义元组使用
(),且,隔开各个数据,数据可以是不同的数据类型。 - 注意:如果定义的元组只有一个数据,那么这个数据后面也好添加逗号,否则数据类型为唯一的这个数据的数据类型
t2 = (10,):tuple类型t3 = (20):int类型t3 = ('hello'):str类型
2.8.1 查询
- 按下标查找数据
tuple1[0]
- 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同
tuple1.index('aa')
- 统计某个数据在当前元组出现的次数
tuple1.count('bb')
- 统计元组中数据的个数
len(tuple1)
- 注意:元组内的直接数据如果修改则立即报错
- 但是如果元组里面有列表,修改列表里面的数据则是支持的,故自觉很重要。
2.9 字典
- 字典为可变类型。可看作java的map集合。
- 符号
{} - 数据 键值对
- 分隔
,
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()
- 增/改
dict['key'] = 'value':如果key存在,则修改value,如果key不存在,则新增键值对
- 删
- del() / del:删除字典或删除字典中指定键值对
del dict['gender']dict.del('gender')
- clear():清空字典3
- del() / del:删除字典或删除字典中指定键值对
- 查
dict['key']:如果当前查找的key存在,则返回对应的值;否则则报错dict.get(key, 默认值):如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回Nonedict1.keys():所有key的集合dict_keys(['key1', 'key2', 'key3',...])dict.values():同上,所有value的集合dict_values(['value1', value2, 'vaule3',...]),可以不同类型,这里value2是整数型dict.items():所有元素的集合dict_items([('key1', 'value1'), ('key2', value2), ('key3', 'value3'),...])
2.10 集合
- 创建集合
{}和set() - 创建空集合 只能使用
set(),因为{}用于创建空字典 - 可以去掉重复数据
- 集合数据是无序的,因此不支持下标
2.10.1 增加数据
- add()
- 因为集合有去重功能,所以,当向集合追加已存在数据时,则不进行任何操作。
- update()
- 追加的数据是序列
s1.update(100) # 报错s1.update([100, 200])s1.update('abc')
- remove()
- 删除集合中的指定数据,如果数据不存在则报错。
- discard()
- 删除集合中的指定数据,如果数据不存在也不会报错。
- pop()
- 随机删除集合中的某个数据,并返回这个数据
- in
- not in
2.11 推导式
2.11.1 列表生成式
- 带if的列表推导式
list1 = [i for i in range(0, 10, 2)]list1 = [i for i in range(10) if i % 2 == 0]
- [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
list1 = [(i, j) for i in range(1, 3) for j in range(3)]
2.11.2 字典推导式
- 创建一个字典:字典key是1-5数字,value是这个数字的2次方
dict1 = {i: i**2 for i in range(1, 5)}
- 将两个列表合并为一个字典
list1 = ['name', 'age', 'gender']list2 = ['Tom', 20, 'man']dict1 = {list1[i]: list2[i] for i in range(len(list1))}
- 提取字典中目标数据:提取上述电脑数量大于等于200的字典数据
counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}count1 = {key: value for key, value in counts.items() if value >= 200}
2.11.3 集合推导式
- 创建一个集合,数据为下方列表的2次方
list1 = [1, 1, 2]set1 = {i ** 2 for i in list1}# set1 = {1, 4}
作者联系方式
QQ : 2219880752
微信 : 15642367151
欢迎各位朋友交流讨论~

浙公网安备 33010602011771号