1 注释:
# 用来标识单行注释 “”“ 用来标识多行注释 ”“”
2 变量:
存储数据的时候给当前数据所在的内存地址起个名字。
3 定义变量: 不能以数字开头,不能是关键字
myName = 'haotaotao'
print(myName) // haotaotao
4 数据类型:
a = 10 # int
b = 10.0 # float
c = '123' # str
d = True # bool
e = [1,2,3,4] # list
f = (1,2,3,4,5) # tuple
g = {1,2,3,4,5} # set
h = {'name':'zs'} # dict
5 格式化输出:
%s : 字符串 %d :十进制整数 %f :浮点数
name = 'zs' print('我的名字是%s', % name)
age = 12 print('我的年龄是%d',% age) print('补全三位数%03d',%age) # 012
height = 164.3445 print('我的身高是%.2f', %height) 代表保留两位
print('我的名字是%s,年龄是%d,身高是%f',% (name,age,height))
f 格式化字符串: python3.6新增的语法
print(f'我是{name},年龄是{age},身高是{height}')
6 转义字符:
\n 换行 \t 4个空格的距离
print(‘Hello\nWord’)
print('hello', end = '\n') print语句中默认自带一个\n的换行符 如果把 end='\t'或者是end='...', 那么他
们就是根据 空格 或者是 ... 来进行链接了。
7 输入的语法
input('提示信息 输出的是字符串') # str 类型的
8 数据类型的转化
int('111') # 转换后 类型 int
float(10)# 10 float('10') # 10
str(10) # '10' tuple([1,2,3,4]) # (1,2,3,4)
list((1,2,4,5)) # [1,2,4,5]
eval('1') # 1 eval('1.1') # 1.1 eval('[1,2,3,4]') # [1,2,3,4]
9 运算符:
+ - * / // % ** ()
1+1=2 2-1=1 3*3=9 10/2=5 10//3=3 10%3=1 2**4=16
10 赋值运算符:
=
num ,num 1 = 1 ,2
num = 1
a = b = 100 # a = 100 b=100
11 复合赋值运算符
+= -= *= /= //= %= **=
如果存在: a = 10 a+=10+2 这个时候是先算10+2 然后再算 a+=12
12 比较运算符:
> < >= <= != and(都真才真) or(有一个是真就为真) not(取反)
数字使用and or 0and1 输出0 1and2输出2 2and3输出3 0or1输出1 1or2输出1
13 条件语句: 3>5and5<6 可以简写为 3>5<6
if 3>5:
print('条件成立')
elif 3>5:
print('条件成立')
else:
print('条件不成立')
14 三目运算符:
a = 10 b = 20
c = a if a > b else b # 执行的过程 如果a>b 那么c=a 否则 c = b
15 while循环语句: 如果遇到break 則後面的else代碼就不會輸出了,否则就会正常输出
i = 0
while i < 5:
print('循环')
i+=1
while i<10:print(i)if i==5:breaki+=1 else:print('woshuchulema')
16 循环语句:正常结束之后else语句也会输出 如果入到break则else不会输出了
for i in range(0,10):print(i) else:print('我会输出吗')
17:切片的使用:第一个参数开始的索引,第二个参数结束的索引,第三个参数步长,默认是1
str1 = 'woshizhongguoren' print(str1[0:6]) # woshiz print(str1[0:6:2]) # wsi print(str1[::-1]) # nerouggnohzihsowlist1 = [1,2,3,4] print(list1[0:2])tuple1 = (1,2,3,4) print(tuple1[0:2])
不支持 集合和字典
18 常见的查找方法:find只适用于字符串 找到返回对应的索引,找不到返回-1; index也是用于查找如果找不到对应的就会报错。
str1 = '12345678'print(str1.find('2')) 1 print(str1.find('0')) -1print(str1.index('8')) 7 print(str1.index('0')) 报错
19 count用于查找字符串列表 元组 中某个元素出现的次数, 集合和字典不能使用:
str1 = '12345678111' list1 = [1,2,3,2,1,2,3,4,32,1] tuple1 = (1,2,1,2,3,2,1,2) set1 = {1,1,2,3,3,4}print(str1.count('1')) print(list1.count(1)) print(tuple1.count(1))
20 replace字符串的替换操作,只存在字符串:
str1 = '12345678111' print(str1.replace('1','0'))
21 字符串的分割成列表
str1 = '1-2-3-4-5-6-7-8-1-1-1'print(str1.split('-')) # ['1', '2', '3', '4', '5', '6', '7', '8', '1', '1', '1']
22 capitalize()将字符串第一个字母转化为大写 , title()将字符串的每个字母的第一个大写
str2 = 'abc jsdb sjk'print(str2.title()) # Abc Jsdb Sjkprint(str2.capitalize()) # Abc jsdb sjk
23 lower()字符串大写转小写 upper()小写转大写
str3 = 'asdlsdsdsa'
print(str3.lower()) # asdlsdsdsa
print(str3.upper()) # ASDLSDSDSA
24 strip() lstrip() rstrip() 去掉空白:
str1 = ' 21 32 43212 '、print(str1.lstrip()) print(str1.rstrip())print(str1.strip())
25 ljust() rjust() center() 填充字符串
str1 = 'hello'print(str1.ljust(10)) # helloprint(str1.rjust(10,'.')) # .....hello/print(str1.center(10,'.')) # ..hello...
26 startwith() endwith()判断是否以什么开始或结束
str1 = 'hello'print(str1.startswith('j')) # Falseprint(str1.startswith('h')) # trueprint(str1.endswith('o')) # True
27 isalpha() 字符串至少有一个字符是字母,并且其他字符也都是字母才返回true
isdigit()字符串都是数字 返回True 否则返回false
isspace()只包含空字符串返回True
28 len访问长度,所有类型的数据都可以访问
str1 = '1-2-3-4-5-6-7-8-1-1-1' list1 = [1,2,3,2,1,2,3,4,32,1] tuple1 = (1,2,1,2,3,2,1,2) set1 = {1,1,2,3,3,4} dict1 = {'name':'zs','age':12}print(len(dict1)) print(len(str1)) print(len(list1))print(len(list1)) print(len(set1))
29 in 用来判断是否存在某个元素 , 适用于所有类型的数据, not in 判断不存在
print('1' in str1) # True print('1' in list) # True print('1' in tuple) # Trueprint('name' in dict1) # True
30 列表的方法:追加 append , 合并extend , 插入 insert(), 删除最后一个 pop ()
del()删除指定的元素 remove()删除指定的元素 清空所有的元素 clear()
翻转数组 reverse() 排序 sort() 复制 copy()
list1.append('aa') print(list1) list1.extend(['b','c']) print(list1) list1.pop() print(list1) list1.remove('aa')
print(list1) del list1[0] print(list1)
31 元组:不能被修改的数据 成为元组,元组常见操作
print(tuple1[0])获取元组元素 print(tuple1.index(1)) 获取元素的索引 print(tuple1[10].name = 'ls') 可以修改元组中列表或字典的元素
32 字典的操作: 增加 修改 获取值 获取所有的key 获取所有的value
dict1 = {'name':'zs','age':12}dict1['sex'] = 'nan'dict1['name'] = 'ls'print(dict1['name'])print(dict1.get('age'))print(dict1.keys())print(dict1.values())
33 字典的items属性 获取到的是列表的元组格式[(),()]
dict1 = {'name':'zs','age':12}print(dict1.items()) # dict_items([('name', 'zs'), ('age', 12)])for i,v in dict1.items(): # dict_items([('name', 'zs'), ('age', 12)])print(i)print(v)
34 集合 创建空集合只能使用set()如果用{} 则是字典,增加单个元素add ()增加多个update()
discard() 删除指定的元素 pop()删除某个元素
set1 = {1,1,2,3,3,4}set1.add(5) , set1.update({7,8,9}), set1.discard(8) set1.pop()
35 目标运算符:
+ 拼接 字符串 类别 元组 * 复制 字符串 列表 元组 in 适用所有 not in适用于所有
36 range()生成序列 ,
如果只有一个参数那就是默认从0开始不包含最后一个,如果是两个参数包前不包后 如果是三
个最后一个就是步长值
37 enumerate() 将列表转化为元组列表的方法
list1 = [1,2,3,2,1,2,3,4,32,1]a = enumerate(list1)for i in a:print(i) # (0, 1) (1, 2) (2, 3)
38 容器类型转化:
tuple()可以将任意类型的数据转化为元组 但是字典只是将key转化为了元组
set() 不能转化tuple的类型 但是字典只是将key转化为了元组
list()可以转化任何类型的 但是字典只是将key转化为了元组
39 推导式:
列表推导式: list1 = [ i for i in range(10)] 看for循环就行 前面的i是返回值也就是[]需要的返回值
带if推导式:list2=[i for i in range(10) i % 2 == 0] 符合i%2=0 的返回
多个for循环:list3 = [(i,j) for i in range(3 for j in range(6))] [(1,0),(1,1),(1,2)...]
创建字典:dict1 = {i:i**3 for i in range(10)} {1:1,2:8,...}
两个列表合并为一个字典 dict1 = {list[i]:list2[i] for i in len(list) }
40 定义函数 :
def fn1():print('woshifun')def fn2():return 10def fn3(a,b):return a + bfn3(10,30)def fn4():a = fn3(10,20)fn2()return a
41 变量的作用域
a = 10 # 全局变量 函数内外都能访问 print(a) # 10 def fn():print(a)fn() # 10
def fn():a = 10 # 函数内部的变量只能函数自身访问 print(a)fn() print(a)
42 函数如何修改全局变量的值呢? 通过关键之 global
a = 10def fn():global aa = 20print(a) # 20fn()print(a) # 20
43 函数一次性返回多个数据的类型是元组:
def fn():return 1,2print(fn()) # (1,2)
44 函数的参数 :
def fn(a,b,c=20): # c=20 为默认参数return a + b + cfn1 = fn(10,10) print(fn1)
def fn(*args): # *args元素的集合 print(args) # (1,2,3,4,5,6)fn1 = fn(1,2,3,4,5,6) print(fn1)
def fn(**kwargs): # 参数是字典的类型print(kwargs) # {'name': 'zs', 'age': 12}fn1 = fn(name='zs',age=12)print(fn1)
45 变量之间的替换:
a = 10 b = 20 c = None c = b b = a a = cprint(a,b) # 20 10
a ,b = 1,2
a,b = b,a
46 了解引用: 基本数据类型 只要值发生改变 id就会变化不一致
a = 10 b = aprint(id(a))# 140735238118104 print(id(b))# 140735238118104b = 20 print((id(a)))# 140735238118104 print(id(b))# 140735238118424
47 元组 列表 等 都用用的同一个id地址
a = [1,2,3,4,5,6] b = aprint(id(a)) # 2230564016512 print(id(b)) # 2230564016512b[2] = 10 print(id(a)) # 2230564016512 print(id(b)) # 2230564016512
48 如果是元组 列表重新赋值的话 id地址就不同了
a = [1,2,3,4,5,6]b = aprint(id(a)) 2199992914304print(id(b)) 2199992914304b = [1,54,32,65]print(id(a)) 2199992914304print(id(b)) 2199992916160
49 可变和不可变类型:
可变类型: 列表 字典 集合
不可变类型: 整数型 浮点数 字符串 元组
50 递归函数 求三以内的累加和。
def fn(num):if num ==1:return 1return num + fn(num-1)print(fn(3)) # 6
执行过程相当于 rentun num + ladbml 2 : 2 + ladbml 1 : 1 + ladnl 1: 1 等
51 lamdba的参数形式
# 没有参数 fn1 = lambda : 20 print(fn1()) # 20# 有多个参数 fn2 = lambda a,b:a+b print(fn2(1,2)) # 3fn3 = lambda *args:args print(fn3(1,2,3,4,5)) # (1, 2, 3, 4, 5)fn4 = lambda **kwargs:kwargs print(fn4(name='zs',age=12)) # {'name': 'zs', 'age': 12}
fn5 = lambda a,b: a if a >b else b print(fn5(10,20)) # 如果a>b返回a 否则返回b
52 字典的排序
obj = [{'name':'zs','age':12},{'name':'ls','age':11},{'name':'zs','age':14}] obj.sort(key= lambda key:key['name']) print(obj) [{'name': 'ls', 'age': 11}, {'name': 'zs', 'age': 12}, {'name': 'zs', 'age': 14}] obj.sort(key= lambda key:key['name'],reverse=True) print(obj) [{'name': 'zs', 'age': 12}, {'name': 'zs', 'age': 14}, {'name': 'ls', 'age': 11}]
53 高阶函数:函数的参数是一个函数
def fn(a,b,c):return c(a)+c(b)def fn1(a):return abs(a)result = fn(-10,20,fn1) print(result) # 30
54 内置的高阶函数 map reduce filter
list1 = [1,2,3,4,5] def fn(a):return a*2result = map(fn,list1) print(result) # <map object at 0x000002151179B6A0> print(list(result)) # [2, 4, 6, 8, 10] result = map(lambda x:x*2,list1) print(list(result)) # [2, 4, 6, 8, 10]
list1 = [1,2,3,4,5] import functools def fn(a,b):return a+bresult = functools.reduce(fn,list1) print(result) # 15 result = functools.reduce(lambda x,b:x+b,list1) print(result)
list1 = [1,2,3,4,5] result = filter(lambda x:x<3,list1) print(list(result)) # [1,2]
55 文件的操作:读 写 追加
打开文件 open(文件路径,模式)
读文件 :r 如果文件不存在就报错
f = open('test.txt','r') print(type(f)) # <class '_io.TextIOWrapper'> f.close()
写文件:w, 如果文件不存在就创建文件,写入的内容会替换之前的内容
f = open('test1.txt','w',encoding='UTF-8')
f.write('离离原上草') f.write('一岁一孔融')
f.close()
追加文件内容:a 如果文件不存在就创建文件 向内容末尾追加内容
f = open('test1.txt','a',encoding='UTF-8')f.write('野火烧不尽。春风吹又生')f.close()56 读取文件的内容 read(num) readline readlines f = open('test.txt','r',encoding='UTF-8')c = f.read() # 读取所有内容print(c)f.close()
f = open('test.txt','r',encoding='UTF-8')c = f.readline() # 读取一行内容print(c)f.close()
f = open('test.txt','r',encoding='UTF-8')c = f.readlines() # 读取所有容 ['123435\n', '124332\n', '353443\n', '456544\n']print(c)f.close()
57 seek 移动文件的指针 文件对象.seek(偏移量,起始位置)起始位置包括:(0,1,2) 0 从头 1 当前 2 最后 f为0 a为2
f = open('test.txt','r')
f.seek(2,0)
c = f.read()
print(c) # 读取的文件 不再是从头开始了 而是从索引为2的开始
f.close()
58 文件备份 : 获取文件名称 判断格式是否正确 读文件 创建备份文件名 读取文件内容 写入到备份文件
file_name = input('亲 请输入你要备份的文件')# 获取文件的后缀 f = file_name.rfind('.')# 进行判断 if f>0:f1 = file_name[f:]# 获取之前的文件名 + [备份] + 后缀f0 = file_name[:f]# 创建新的文件名new_File_name = f0 + '[备份]' + f1# 读取源文件内容f_c = open(file_name,'r')n_c = open(new_File_name,'a')f_s = f_c.readlines()for i in f_s:n_c.write(i) else:print('你输入文件错误')
59 文件的重命名 以及操作文件夹
import os
os.rename('test.txt','txt.txt') # 给文件重新命名
os.remove('txt.txt') # 删除文件
os.mkdir('aaa') # 创建文件夹
os.mkdir('aaa/bbb') # 创建文件夹
os.chdir('aaa') # 进入到某某文件夹中print(os.getcwd()) # 获取当前文件存在的绝对路径 D:\pythonFile\pythonProject
print(os.listdir()) # 获取当前文件下的所有其他文件包含自己 是一个列表 ['aaa', 'demo.py', 'echarts.py', 'my_package', test[备份].txt', 'webSocket.py', '__pycache__', '基础柱状图.html']
60 批量操作修改所有文件的文件名称:
import os
file_list = os.listdir()
for i in file_list:
os.rename(i,'python_'+i)